Как проверить, не является ли переменная переменной?

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

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

if (myVar) {...}

или

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

Ответ 1

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

Единственными значениями, которые не являются правдивыми в JavaScript, являются следующие (значения falsy a.k.a.):

  • null
  • undefined
  • 0
  • "" (пустая строка)
  • false
  • NaN

Ответ 2

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

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

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

Ответ 3

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

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

if(myvar) { }

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

Ответ 4

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

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

if(value != 'null'){}

Итак, null - это строка, которая считывает "null", а не имеет значение null.

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

Ответ 5

  • код внутри вашего 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

Ответ 6

если myVar имеет значение null, то если блок не выполняется по-другому, он будет выполняться.

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

Ответ 7

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

if(typeof(variable) !== "undefined") {
    //it exist
    if(variable !== null) {
        //and is not null
    }
    else {
        //but is null
    }
}
else {
    //it doesn't
}

Ответ 8

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

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

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

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