Стиль синтаксиса записывает a =! 0 вместо a = true? [Дубликат]

Попробуйте использовать NULL в качестве значения в файле csv для поля ID.

15
задан DarkMantis 24 November 2011 в 12:36
поделиться

3 ответа

return !1 означает return false и return !0 - return true. В спецификации - 11.4.9 Логический оператор NOT - когда вы размещаете! напротив, результат оценивается как Boolean, и возвращается обратное.

Пример:

var a = 1, b = 0;
var c = a || b;
alert ( "c=" + c + " " + typeof c ); // here c will be number
a = !0, b = !1;
c = a || b;
alert ( "c=" + c + " " + typeof c ); // here it will be boolean

Я в основном вижу это в коде, прошедшем через оптимизатор Google. Я думаю, что в основном это делается для достижения короткого кода.

Он часто используется, когда необходим логический результат - вы можете увидеть что-то вроде !!(expression). Например, поиск в jQuery.

16
ответ дан Bakudan 17 August 2018 в 10:03
поделиться
  • 1
    Поскольку файл был сжат, я поместил его через код beautifier ( jsbeautifier.org ), и он заменил true / false на! 0 и! 1; Однако я не знаю, почему. Я только что проверил оригинал, но, черт возьми, его было сложно найти: P Еще раз спасибо! – DarkMantis 24 November 2011 в 12:42
  • 2
    Разве это не создало бы удар по производительности кода? Незначительный хит, возможно, но то же самое можно сказать о сжатии от 4-5 байт до двух, чтобы сократить время загрузки JS. – Erik Reppen 2 October 2013 в 19:58
  • 3
    Это совершенно незначительная потеря производительности. Проверьте jsperf.com/negated-0-vs-false , и вы увидите, что даже самый медленный браузер может оценить один из них более 170 миллионов раз в секунду. – user24601 9 January 2014 в 22:26
  • 4
    Но зачем использовать! 1 вместо 0? 0 Будет еще короче, не так ли? – Mike Bovenlander 10 April 2015 в 10:03
  • 5
    @Mike Да, это будет, но тогда это будет число, а не логическое. – Bakudan 10 April 2015 в 15:12

Здесь код проверяет:

  • ничего не возвращает или ничего не делает в этих случаях: "case 1", "case true", "case yes", "case y", "Case 1"
  • и когда дело: "case !0" return "true"
  • , когда ни один из вышеперечисленных случаев не был выполнен по умолчанию, он возвращает «false»
-2
ответ дан Poelinca Dorin 17 August 2018 в 10:03
поделиться
  • 1
    Это не верно. Эта функция возвращает true для всех случаев в вашей первой пуле в дополнение к! 0, иначе false. Не говоря уже о том, что этот ответ не касается того, что спрашивает пользователь. – trigoman 14 August 2014 в 20:07

Это, кажется, особенно глупый способ возврата true или false

8
ответ дан spender 17 August 2018 в 10:03
поделиться
  • 1
    2 байта против 4 (или 5 для false). Для загрузки Javascript требуется меньше полосы пропускания! :П – Paulpro 24 November 2011 в 12:38
  • 2
    Я не считал, что это могло бы пройти через минерализацию. – spender 24 November 2011 в 12:39
  • 3
    Ах, вот почему. Извините за путаницу. :) – DarkMantis 24 November 2011 в 12:43
Другие вопросы по тегам:

Похожие вопросы: