web-dev-qa-db-ja.com

このifステートメントは0を検出しません。 nullまたは空の文字列のみ

JavaScriptを使用して、どのようにして0を検出しませんが、それ以外の場合はnullまたは空の文字列を検出しますか?

24
Hamster

あなたの質問のタイトルから:

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

=空の文字列とstrict-equality-compare valを試みた場合:

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

Firebugを使用したテスト:

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

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

編集:説明については、代わりにCMSのコメントを参照してください。

27
BoltClock

ゼロ以外のすべての誤った値を検出する場合:

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

したがって、これはnull、空の文字列、falseundefinedなどを検出します。

29
Quentin

これは遅すぎるかもしれませんが、他の人の役に立つかもしれません。

私があなたを正しく理解している場合、以下のステートメントで0を除外する必要があります。

 if(value) {
    //Do things
 }

これを行う最も簡単な方法は、次のようなステートメントを書くことだと思います。

if(value || value === 0) {
  //Do things
}

これがお役に立てば幸いです。

0
Ahmed Sobhy

私が正しく理解していれば、空でない文字列を検出したいですか?

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