Если вы хотите разрешить 0
и ""
в качестве допустимых значений и хотите охватить регистр переменной, может даже не быть удален, но не считать null действительным значением, тогда вы должны специально проверитьдля undefined
и null
вот так:
if (typeof myVar !== 'undefined' && myVar !== null)
...
Многие значения не соответствуют действительности (они не удовлетворяют if (myVar)
, поэтому вам действительно нужно осознанно решить, какие из них вы тестируете.Все это ложь:
undefined
false
0
""
null
NaN
Если вы хотите разрешить одни, но не другие, то вам нужно выполнить более конкретный тест, чем if (myVar)
, как я показал выше, чтобы выделить только значениявас волнует.
Вот хорошая запись значений Falsey: http://www.sitepoint.com/javascript-truthy-falsy/.
Если вы знаете, что переменная объявлена, и вы просто хотите увидеть, была ли она инициализирована с чем-то отличным от нуля, вы можете использовать это:
if (myVar != undefined)
...
Использование только !=
вместо !==
позволяет проверять как неопределенные, так и нулевые с помощью преобразования типов. Хотя я бы не рекомендовал это, потому что если выпытаешься будуМежду значениями Falsey, вероятно, лучше НЕ позволять движку JS вообще выполнять какие-либо преобразования типов, чтобы вы могли точно контролировать, что он делает, без необходимости запоминать все правила равенства преобразования типов.Я хотел бы придерживаться этого, чтобы быть более явным:
if (typeof myVar !== 'undefined' && myVar !== null)
...
Если вы хотите знать, имеет ли оно какое-либо не-ложное значение, вы, конечно, можете сделать это (но это не позволит 0
или ""
в качестве допустимых значений:
if (myVar)
...