2010-12-05 5 views

ответ

271

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

только значения, которые не truthy в JavaScript являются следующие (ака falsy значений):

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

Есть прочитанный на этот пост: http://enterprisejquery.com/2010/10/how-good-c-habits-can-encourage-bad-javascript-habits-part-2/

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

if(myvar) { } 

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

+1

Благодарность за Выкрикните Джонатон;) – 2010-12-06 04:16:51

+0

благодаря спариванию - простой и легкий – 2012-09-20 04:49:50

+25

Эта проверка на самом деле не безопасно. Если myvar равен 0, false или любому другому значению фальши, тест будет терпеть неудачу (если вы только намерены проверить не null). Поэтому используйте это только для проверки не null, если переменная никогда не может иметь другого значения ложности. – Werzi2001 2013-09-19 16:03:03

-1

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

1-ый пример определяет, имеет ли значение в MYVAR верно и выполняет код внутри от {...}

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

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

27

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

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

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

4

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

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

if(value != 'null'){} 

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

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

1

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

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

Смежные вопросы