web-dev-qa-db-ja.com

変数がnullでないことを確認するにはどうすればいいですか?

以下はJavaScriptで変数がnullではないかどうかをチェックする2つの方法ですが、どちらを使用するのがベストプラクティスであるかわかりません。

私はすべきです:

if (myVar) {...}

または

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

それらは同等ではありません。 iftruthy(つまり、条件でmyVarに評価される)の場合、最初のブロックはtrueステートメントに続くブロックを実行し、2番目のブロックはブロックを実行しますmyVarnull以外の値の場合。

JavaScriptで真実ではない唯一の値は次のとおりです(a.k.a. falsy values):

  • null
  • undefined
  • 0
  • ""(空の文字列)
  • false
  • NaN
365
Tim Down

変数がNULLでないかどうかをテストする方法は次のとおりです。

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

myVarがnullでない場合はブロックが実行されます。myVarが未定義または偽、0またはNaNなどの場合はブロックが実行されます。

54

この記事を読んでください: http://enterprisejquery.com/2010/10/how-good-c-habits-can-encourage-bad-javascript-habits-part-2/

それは一般的にJavaScriptのためのいくつかのいいヒントを持っていますが、それが言及する一つのことはあなたがnullのようにチェックするべきであるということです:

if(myvar) { }

それはまたあなたが気付かないかもしれないことが「偽」と考えられるものに言及します。

43

私がちょうど出会った別の可能なシナリオがあります。

Ajax呼び出しを行い、データを文字列形式でnullとして返しました。私はこのようにチェックしなければなりませんでした:

if(value != 'null'){}

そのため、nullは実際にはnullではなく「null」を読み取る文字列でした。

編集:私はこれをすべきのように販売していないことを理解すべきです。これが唯一の方法であるシナリオがありました。なぜかはわかりません...バックエンドを書いた人がデータを間違って提示していたのかもしれませんが、それはともかく、これは現実です。これが正しくないことを理解している人がこの投票を下し、それが実際に役立っている人が上に投票するのを見るのはイライラします。

6
Flat Cat

ここにあなたはすべて( src )を持っています:

if の場合

enter image description here

== (その否定 !=

enter image description here

=== (その否定 !==

enter image description here

そう

  • if(myVar) { code }内のコードは、myVarが:false, 0, "", null, undefined, NaNと等しい場合、または変数myVarを定義していない場合にのみ実行されません(さらにコードの実行が停止され、例外がスローされます)。
  • あなたのif(myVar !== null) {code}の中のコードは、myVarnullと等しいか、それを定義していない場合にのみ実行されません(例外を投げます)。
2

myVarがnullの場合、blockが他の方法で実行されない場合は実行されます。

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

1
Sanjay Kumaar

定義されていない場合は、準備することをお勧めします。このために私は typeof を使いました

if(typeof(variable) !== "undefined") {
    //it exist
    if(variable !== null) {
        //and is not null
    }
    else {
        //but is null
    }
}
else {
    //it doesn't
}
0
OpenUser