Это если оператор не должен обнаруживать 0;только нулевые или пустые строки - PullRequest
21 голосов
/ 08 октября 2010

Используя JavaScript, как мне НЕ обнаружить 0, а иначе обнаружить пустые или пустые строки?

Ответы [ 3 ]

25 голосов
/ 11 октября 2010

Если вы хотите обнаружить все значения фальси, кроме нуля:

if (!foo && foo !== 0) 

Таким образом, вы обнаружите null, пустые строки, false, undefined и т. Д.

25 голосов
/ 08 октября 2010

Из заголовка вашего вопроса:

if( val === null || val == "" )

Я вижу только то, что вы забыли = при попытке сравнить строго по равенству val с пустой строкой:

if( val === null || val === "" )

Тестирование с Firebug:

>>> 0 === null || 0 == ""
true

>>> 0 === null || 0 === ""
false

РЕДАКТИРОВАТЬ: см. Комментарий CMS вместо объяснения.

0 голосов
/ 08 октября 2010

Если я правильно понял, вы хотите обнаружить непустую строку?

function isNonEmptyString(val) {
  return (typeof val == 'string' && val!='');
}
/*
  isNonEmptyString(0); // returns false
  isNonEmptyString(""); // returns false
  isNonEmptyString(null); // returns false
  isNonEmptyString("something"); // returns true
*/
...