12

変数が未定義かどうかをjavascriptでチェックするのに最適な方法について少し混乱しています。私はこのようにやっています:

myVar === undefined;

しかし、すべての場合において、代わりにtypeofを使用する方が良いでしょうか?

typeof myVar === undefined;

そして、私も見たundefinedvsの使用についてはどうですか?"undefined"

4

3 に答える 3

20

これはチェックする最良の方法です-完全に簡単です:

typeof myVar === "undefined"

これは問題ありませんが、誰かが役に立たずにグローバルundefined値を上書きした場合、失敗する可能性があります:

myVar === undefined;

ECMAScript 5 はそれundefinedが読み取り専用であることを指定していると言わざるを得ないため、上記は準拠するすべてのブラウザーで常に安全です。

比較することになるため"undefined" === undefined(異なるタイプ)、これは決して機能しません:

typeof myVar === undefined;
于 2013-02-26T16:15:50.677 に答える
2

このテストは常に期待どおりに機能します。

typeof a === 'undefined'

の値はundefined変更できるため、次のようなテストは常に信頼できるとは限りません。

a = {}
a.b === undefined

そのような場合は、void 0代わりに次のことをテストできます。

a.b === void 0
// true

ただし、これは単一変数テストでは機能しません。

a === void 0 // <-- error: cannot find 'a'

に対してテストすることで回避できますwindow.aが、最初の方法を優先する必要があります。

于 2013-02-26T16:18:59.493 に答える
0

myVar === undefinedmyVar は常にパラメーターとして宣言されるため、パラメーターが関数を介して渡されるかどうかを確認する場合など、最も一般的なケースでは十分であると思います

于 2015-07-24T08:55:16.860 に答える