Используя JavaScript, как я НЕ обнаруживаю 0, но в противном случае обнаруживаю нулевые или пустые строки?
Этот оператор if не должен определять 0; только пустые или пустые строки
Ответ 1
Из названия вопроса:
if( val === null || val == "" )
Я могу только видеть, что вы забыли =
при попытке строгого равенства-сравнить val
с пустой строкой:
if( val === null || val === "" )
Тестирование с помощью Firebug:
>>> 0 === null || 0 == ""
true
>>> 0 === null || 0 === ""
false
РЕДАКТИРОВАТЬ: см. комментарий CMS для объяснения.
Ответ 2
Если вы хотите обнаружить все значения false, кроме нуля:
if (!foo && foo !== 0)
Таким образом, это обнаружит null
, пустые строки, false
, undefined
и т.д.
Ответ 3
Если я правильно понял, вы хотели обнаружить непустую строку?
function isNonEmptyString(val) {
return (typeof val == 'string' && val!='');
}
/*
isNonEmptyString(0); // returns false
isNonEmptyString(""); // returns false
isNonEmptyString(null); // returns false
isNonEmptyString("something"); // returns true
*/