「値は」null
またはundefined
「」をテストする最も効率的な方法は
if ( some_variable == null ){
// some_variable is either null or undefined
}
したがって、次の2行は同等です。
if ( typeof(some_variable) !== "undefined" && some_variable !== null ) {}
if ( some_variable != null ) {}
注1
質問で述べたように、短いバリアントsome_variable
はが宣言されている必要があり、そうでない場合はReferenceErrorがスローされます。ただし、多くの使用例では、これは安全であると想定できます。
オプションの引数を確認します。
function(foo){
if( foo == null ) {...}
既存のオブジェクトのプロパティを確認する
if(my_obj.foo == null) {...}
一方typeof
、宣言されていないグローバル変数を処理できます(単にを返しますundefined
)。しかし、アルシエンデが説明したように、これらのケースは正当な理由で最小限に抑える必要があります。
注2
これ-さらに短い-バリアントは同等ではありません:
if ( !some_variable ) {
// some_variable is either null, undefined, 0, NaN, false, or an empty string
}
そう
if ( some_variable ) {
// we don't get here if some_variable is null, undefined, 0, NaN, false, or ""
}
注3
一般に、の===
代わりに使用することをお勧めします==
。提案されたソリューションは、このルールの例外です。JSHint構文チェッカーはさえ提供しeqnull
、この理由のためにオプションを選択します。
jQueryのスタイルガイド:
厳密な等価チェック(===)は、==を優先して使用する必要があります。唯一の例外は、nullを使用して未定義およびnullをチェックする場合です。
// Check for both undefined and null values, for some important reason.
undefOrNull == null;
if(some_variable) { ... }
またはまたは...の場合some_variable
は実行されませんfalse
0