38

重複の可能性:
JavaScriptで未定義のオブジェクトプロパティを検出する
変数が「未定義」か「null」かを判断する方法JavaScript
でnull、未定義、または空白の変数をチェックする標準関数はありますか?

私のコードでは、次のような条件があります

if (variable !== null && variable !== undefined) {
}

しかし、2つのステップでそれを行う代わりに、つまり、それが定義されておらず、nullでないかどうかをチェックします。このチェックに代わるワンステップチェックはありますか?

4

2 に答える 2

59

null変数をundefined同時にすることはできません。ただし、あなたの質問に対する直接の答えは次のとおりです。

if (variable != null)

2つで=はなく1つ。

JavaScript仕様の「抽象等式比較アルゴリズム」には、一方のオペランドがnullで、もう一方のオペランドがである場合に特化した2つの特別な句がundefinedあり、結果はtruefor==falsefor!=です。したがって、変数の値がである場合undefined、それはではなく!= null、nullでない場合、明らかにそうではありません!= null

ここで、識別子が、または、関数パラメータとして、またはグローバルコンテキストのプロパティとしてまったく定義されていない場合は異なります。このような識別子への参照は、実行時にエラーとして扱われます。参照を試みてエラーをキャッチすることができます:varlet

var isDefined = false;
try {
  (variable);
  isDefined = true;
}
catch (x) {}

しかし、私は個人的にそれを疑わしい慣行だと思います。他のライブラリの有無、または同様の状況に基づいて存在する可能性がある、または存在する可能性があるグローバルシンボルの場合、windowプロパティをテストできます(ブラウザのJavaScriptで)。

var isJqueryAvailable = window.jQuery != null;

また

var isJqueryAvailable = "jQuery" in window;
于 2012-09-04T21:44:01.370 に答える
7

独自の関数でラップできます。

function isNullAndUndef(variable) {

    return (variable !== null && variable !== undefined);
}
于 2012-09-04T21:47:50.963 に答える