Я знаю, что ниже приведены два способа JavaScript, чтобы проверить, не является ли переменная null
, но Im confused, которая лучше всего подходит для использования.
Должен ли я делать:
if (myVar) {...}
или
if (myVar !== null) {...}
Я знаю, что ниже приведены два способа JavaScript, чтобы проверить, не является ли переменная null
, но Im confused, которая лучше всего подходит для использования.
Должен ли я делать:
if (myVar) {...}
или
if (myVar !== null) {...}
Они не эквивалентны. Первый будет выполнять блок, следующий за оператором if
, если myVar
является правдивым (т.е. Оценивает true
в условном выражении), а второй будет выполнять блок, если myVar
- любое значение, отличное от null
.
Единственными значениями, которые не являются правдивыми в JavaScript, являются следующие (значения falsy a.k.a.):
null
undefined
0
""
(пустая строка)false
NaN
Вот как вы можете проверить, не является ли переменная переменной NULL:
if (myVar !== null) {...}
блок будет выполнен, если myVar не равен null. он будет выполнен, если myVar undefined или false или 0
или NaN
или что-то еще..
Читайте на этом посту: http://enterprisejquery.com/2010/10/how-good-c-habits-can-encourage-bad-javascript-habits-part-2/
В нем есть несколько полезных советов для JavaScript в целом, но одна вещь, о которых он упоминает, заключается в том, что вы должны проверить нуль как:
if(myvar) { }
В нем также упоминается то, что считается "ложью", которое вы, возможно, не осознаете.
Есть еще один возможный сценарий, с которым я только что столкнулся.
Я сделал ajax-вызов и получил данные обратно как нулевые в строковом формате. Я должен был проверить это следующим образом:
if(value != 'null'){}
Итак, null - это строка, которая считывает "null", а не имеет значение null.
EDIT:. Следует понимать, что я не продаю это как способ, которым это должно быть сделано. У меня был сценарий, где это был единственный способ сделать это. Я не знаю, почему... возможно, тот, кто написал фоновый код, неправильно представлял данные, но независимо от того, это настоящая жизнь. Это разочаровывает, что это проголосовало кто-то, кто понимает, что это не совсем правильно, а затем проголосовало кто-то, на самом деле это помогает.
if(myVar) { code }
НЕ будет выполняться, только когда myVar
равен: false, 0, "", null, undefined, NaN
или вы никогда не определяли переменную myVar
(затем дополнительно код останавливает выполнение и вызывает исключение).if(myVar !== null) {code}
НЕ будет выполняться, только если myVar
равен null
или вы его никогда не определяли (выдает исключение).Здесь у вас есть все (SRC)
если
== (его отрицание ! =)
=== (это отрицание ! ==)
если myVar
имеет значение null, то если блок не выполняется по-другому, он будет выполняться.
if (myVar != null) {...}
Иногда, если он даже не был определен, лучше быть готовым. Для этого я использовал typeof
if(typeof(variable) !== "undefined") {
//it exist
if(variable !== null) {
//and is not null
}
else {
//but is null
}
}
else {
//it doesn't
}
Два условных оператора, которые вы перечисляете здесь, не лучше друг друга. Ваше использование зависит от ситуации. Во втором примере у вас есть опечатка. После восклицательного знака должен быть только один знак равенства.
Первый пример определяет, является ли значение в myVar истинным и выполняет код внутри {...}
В 2-м примере оценивается, если myVar не равен нулю, и если этот случай является истинным, он выполнит ваш код внутри {...}
Я предлагаю взглянуть на условные утверждения для получения дополнительных приемов. Когда вы знакомы с ними, вы можете решить, когда они вам понадобятся.