JavaScriptは変数が存在する(定義されている/初期化されている)かどうかをチェックします。
変数が初期化されているかどうかをチェックする方法はどちらが良い/正しいですか? (変数には何でも入れられると仮定して(文字列、int、オブジェクト、関数など))
if (elem) { // or !elem
または
if (typeof(elem) !== 'undefined') {
または
if (elem != null) {
1632
3
typeof`演算子]1が欲しいのです。具体的には
ほとんどの場合、あなたは以下を使用します。
単純な
if (elem)
とは異なり、0
,false
,NaN
,''
を許可し、null
やundefined
を拒否するので、引数やオブジェクトのプロパティの存在を確認するのに適した、一般的なテストとなります。他のチェックも間違ってはいませんが、使い方が違うだけです。
if (elem)
:
elemがオブジェクトであることが保証されている場合や、
false,
0などが "default" 値であると考えられる場合に使用できます (そのため、
undefinedや
null` と同等です)。typeof elem == 'undefined'
は、指定された
null` が初期化されていない変数やプロパティとは異なる意味を持つ場合に使用できます。これは、
elem
が宣言されていない(つまり、var
文がない、window
のプロパティではない、または関数の引数ではない)場合にエラーを投げない唯一のチェックです。これは、私の意見では、タイプミスを見逃すことになるので、むしろ危険です。これを避けるためには、以下の方法をご覧ください。また、
undefined
との厳密な比較も有効です。ただし、グローバルな
undefined
は別の値でオーバーライドできるので、変数undefined
を使用する前にカレントスコープで宣言しておくとよいでしょう。あるいは
この方法の副次的な利点は、JS ミニファイアが
undefined
変数を 1 文字に減らすことができるので、毎回数バイトを節約できることです。変数が定義されていることだけを気にするのか、意味のある値を持たせたいのかにもよります。
型が未定義かどうかをチェックすると、その変数がまだ定義されていないかどうかをチェックします。
=== null
や
!== nullは、変数の値が正確に
null` であるかどうかのみをチェックします。null
または
!= nullは、変数の値が
undefinedまたは
null` であるかどうかをチェックします。if(value)
は、変数がundefined
,null
,0
, または空の文字列であるかどうかをチェックします。