JavaScriptで未定義をチェックする方法

変数が値を割り当てられずに宣言された場合、その初期値は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の関数。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です