Как проверить, что переменная не равна нулю? - PullRequest
247 голосов
/ 06 декабря 2010

Я знаю, что ниже в JavaScript есть два способа проверить, является ли переменная null, но я запутался, и это лучший метод для использования.

Должен ли я это сделать:

if (myVar) {...}

или

if (myVar !== null) {...}

Ответы [ 8 ]

357 голосов
/ 06 декабря 2010

Они не эквивалентны.Первый выполнит блок, следующий за оператором if, если myVar равен truey (т.е. оценивается как true в условном выражении), а второй выполнит блок, если myVar является любым значениемкроме null.

Единственными неверными значениями в JavaScript являются следующие (иначе ложные значения):

  • null
  • undefined
  • 0
  • "" (пустая строка)
  • false
  • NaN
56 голосов
/ 06 декабря 2010

Вот как вы можете проверить, не является ли переменная NULL:

if (myVar !== null) {...}

блок будет выполнен, если myVar не равен NULL .. он будет выполнен, если myVar равенundefined или false, или 0, или NaN, или что-нибудь еще ..

43 голосов
/ 06 декабря 2010

Прочитайте в этом посте: http://enterprisejquery.com/2010/10/how-good-c-habits-can-encourage-bad-javascript-habits-part-2/

В нем есть несколько хороших советов по JavaScript в целом, но стоит упомянуть, что вы должны проверить на нуль, например:

if(myvar) { }

В нем также упоминается то, что считается «ложью», которую вы можете не осознавать.

7 голосов
/ 13 октября 2014

Есть еще один возможный сценарий, с которым я только что столкнулся.

Я сделал вызов ajax и получил данные как нулевые, в строковом формате.Я должен был проверить это так:

if(value != 'null'){}

Итак, null был строкой, которая читала "null", а не была нулевой.

EDIT: Это должно бытьСледует понимать, что я не продаю это так, как это должно быть сделано .У меня был сценарий, где это был единственный способ сделать это.Я не уверен, почему ... возможно, парень, который написал back-end, неправильно представлял данные, но, тем не менее, это настоящая жизнь.Расстраивает то, что кто-то, кто понимает, что это не совсем правильно, голосует против этого, а потом - кто-то, кто действительно помогает.

4 голосов
/ 18 апреля 2019
Код
  • внутри вашего if(myVar) { code } НЕ будет выполняться, только когда myVar равен: false, 0, "", null, undefined, NaN или вы никогда не определяли переменную myVar (затем дополнительно остановите выполнение кода и сгенерируйте исключение).
  • внутри вашего if(myVar !== null) {code} НЕ будет выполнен, только если myVar равен null или вы его никогда не определяли (выбрасывает исключение).

Здесь у вас есть все ( src )

если

enter image description here

== (егоотрицание ! = )

enter image description here

=== (его отрицание ! == )

enter image description here

1 голос
/ 05 сентября 2017

, если myVar равно нулю, то, если блок не выполняется иначе, он будет выполнен.

if (myVar != null) {...}

0 голосов
/ 07 декабря 2018

Иногда, если это не было даже определено, лучше подготовиться.Для этого я использовал typeof

if(typeof(variable) !== "undefined") {
    //it exist
    if(variable !== null) {
        //and is not null
    }
    else {
        //but is null
    }
}
else {
    //it doesn't
}
0 голосов
/ 06 декабря 2010

Два условных утверждения, которые вы перечислите здесь, не лучше, чем друг друга. Ваше использование зависит от ситуации. Кстати, у вас есть опечатка во втором примере. После восклицательного знака должен быть только один знак равенства.

В первом примере определяется, является ли значение в myVar истиной, и выполняет код внутри {...}

Во втором примере оценивается, если myVar не равно нулю, и если этот случай равен true, он выполнит ваш код внутри {...}

Я предлагаю взглянуть на условные выражения для получения дополнительной техники. Как только вы ознакомитесь с ними, вы сможете решить, когда они вам понадобятся.

...