以下はJavaScriptで変数がnull
ではないかどうかをチェックする2つの方法ですが、どちらを使用するのがベストプラクティスであるかわかりません。
私はすべきです:
if (myVar) {...}
または
if (myVar !== null) {...}
それらは同等ではありません。 if
がtruthy(つまり、条件でmyVar
に評価される)の場合、最初のブロックはtrue
ステートメントに続くブロックを実行し、2番目のブロックはブロックを実行しますmyVar
がnull
以外の値の場合。
JavaScriptで真実ではない唯一の値は次のとおりです(a.k.a. falsy values):
null
undefined
0
""
(空の文字列)false
NaN
変数がNULLでないかどうかをテストする方法は次のとおりです。
if (myVar !== null) {...}
myVarがnullでない場合はブロックが実行されます。myVarが未定義または偽、0
またはNaN
などの場合はブロックが実行されます。
この記事を読んでください: http://enterprisejquery.com/2010/10/how-good-c-habits-can-encourage-bad-javascript-habits-part-2/
それは一般的にJavaScriptのためのいくつかのいいヒントを持っていますが、それが言及する一つのことはあなたがnullのようにチェックするべきであるということです:
if(myvar) { }
それはまたあなたが気付かないかもしれないことが「偽」と考えられるものに言及します。
私がちょうど出会った別の可能なシナリオがあります。
Ajax呼び出しを行い、データを文字列形式でnullとして返しました。私はこのようにチェックしなければなりませんでした:
if(value != 'null'){}
そのため、nullは実際にはnullではなく「null」を読み取る文字列でした。
編集:私はこれをすべきのように販売していないことを理解すべきです。これが唯一の方法であるシナリオがありました。なぜかはわかりません...バックエンドを書いた人がデータを間違って提示していたのかもしれませんが、それはともかく、これは現実です。これが正しくないことを理解している人がこの投票を下し、それが実際に役立っている人が上に投票するのを見るのはイライラします。
ここにあなたはすべて( src )を持っています:
if の場合
== (その否定 != )
=== (その否定 !== )
そう
if(myVar) { code }
内のコードは、myVar
が:false, 0, "", null, undefined, NaN
と等しい場合、または変数myVar
を定義していない場合にのみ実行されません(さらにコードの実行が停止され、例外がスローされます)。if(myVar !== null) {code}
の中のコードは、myVar
がnull
と等しいか、それを定義していない場合にのみ実行されません(例外を投げます)。myVar
がnullの場合、blockが他の方法で実行されない場合は実行されます。
if (myVar != null) {...}
定義されていない場合は、準備することをお勧めします。このために私は typeof を使いました
if(typeof(variable) !== "undefined") {
//it exist
if(variable !== null) {
//and is not null
}
else {
//but is null
}
}
else {
//it doesn't
}