変数が値を割り当てられずに宣言された場合、その初期値はundefined
です。
JavaScriptで値がundefined
であるかどうかをどのように確認しますか?
簡単な答え
最近のブラウザでは、変数を安全に比較できますundefined
に直接:
undefined
古いブラウザでは次のように値を再割り当てできるため:
再割り当て後、は、変数に値が割り当てられているかどうかを直接検出しなくなりました。
ただし、この動作は2009年にECMAScript5で修正されました。
最近のブラウザではsグローバルなundefined
値を再割り当てすることはできなくなりました。
IE8以前をサポートする必要がある場合はどうなりますか?
通常、 unと直接比較する定義されたものはまだ安全です。アプリケーションがundefined
の値を再割り当てする実際的な理由はありません。
Thomas Edingは、説得力のあるアナロジーでこれを示しています。
それでも心配な場合は、グローバルundefined
が上書きされた場合でも値が未定義かどうかを確認する2つの方法があります。
を使用できます。 undefined
の値を取得するためのvoid演算子。これは、グローバルなwindow.undefined
値が上書きされた場合でも機能します:
この例のゼロには特別な意味はありません。1
または
。 void(anything)
は常にundefined
と評価されます。
または、typeof演算子を使用して、値が安全にチェックされるかどうかを確認できます。割り当てられました。グローバルなundefined
値と比較する代わりに、値のタイプが「未定義」であるかどうかを確認します。
これは以前のオプションとは少し異なることに注意してください。name
が宣言されていなくてもtypeof
は未定義と表示されます。宣言されていない変数をundefined
またはvoid(0)
と比較した場合、代わりにReferenceErrorが発生します。
ただし、しないでください。 void(0)を直接使用する
コードでvoid(0)
またはtypeof x === "undefined"
を逐語的に使用することは避けてください。これらの式は自明ではないため、次のようなisUndefined関数でラップする必要があります。
多くのユーティリティライブラリには、この機能がすでに組み込まれています。たとえば、_.isUndefined
Underscore.jsの関数。