JavaScript で変数が存在し、null(false、empty) ではないかどうかを判断するには、次の 2 つの方法があることを知っています。
1)if ( typeof variableName !== 'undefined' && variableName )
2)if ( window.variableName )
どちらがより好まれますか、そしてその理由は何ですか?
JavaScript で変数が存在し、null(false、empty) ではないかどうかを判断するには、次の 2 つの方法があることを知っています。
1)if ( typeof variableName !== 'undefined' && variableName )
2)if ( window.variableName )
どちらがより好まれますか、そしてその理由は何ですか?
変数名にアクセスしてもReferenceError
. 式typeof variableName !== 'undefined'
は false
、次の 2 つのケースのいずれかになります。
var variableName
スコープ内にない)、またはundefined
(つまり、変数の値は定義されていません)それ以外の場合、比較は に評価されtrue
ます。
変数が宣言されているかどうかを本当にテストしたい場合は、それを参照しようとする試みによって生成されたものが必要になりcatch
ます。ReferenceError
var barIsDeclared = true;
try{ bar; }
catch(e) {
if(e.name == "ReferenceError") {
barIsDeclared = false;
}
}
undefined
宣言された変数の値がどちらでもないかどうかをテストしたいだけの場合は、null
単純にテストできます。
if (variableName !== undefined && variableName !== null) { ... }
または同等に、非厳密な等価性チェックを使用してnull
:
if (variableName != null) { ... }
操作の 2 番目の例と右側の式の両方で&&
、値が「falsey」かどうか、つまりfalse
ブール値のコンテキストで強制されるかどうかをテストします。このような値にはnull
、、、、false
および0
空の文字列が含まれますが、これらすべてを破棄する必要があるわけではありません。
「未定義」は、変数が保持する完全に有効な値であることに注意することが重要です。変数が存在するかどうかを確認したい場合は、
if (window.variableName)
変数が実際に定義されていることを確認しているため、より完全なチェックです。ただし、これは、変数がオブジェクトであることが保証されている場合にのみ役立ちます! さらに、他の人が指摘したように、variableName の値が false、0、''、または null の場合、これは false を返すこともあります。
とはいえ、未定義の値を持ちたくない場合が多いため、通常、日常の目的には十分ではありません。そのため、最初に変数が定義されていることを確認してから、Adam が指摘したように、変数が本当に未定義でない限り未定義を返さない typeof 演算子を使用して未定義ではないことをアサートする必要があります。
if ( variableName && typeof variableName !== 'undefined' )
変数 (v など) が定義されていて、null でないかどうかを確認する場合:
if (typeof v !== 'undefined' && v !== null) {
// Do some operation
}
、、、、、などのすべての偽の値をチェックundefined
する場合:null
''
0
false
if (v) {
// Do some operation
}
if ( typeof variableName !== 'undefined' && variableName )
//// could throw an error if var doesnt exist at all
if ( window.variableName )
//// could be true if var == 0
////further on it depends on what is stored into that var
// if you expect an object to be stored in that var maybe
if ( !!window.variableName )
//could be the right way
best way => see what works for your case
if (variable)
variable がオブジェクトであることが保証されている場合、または false、0 などが「デフォルト」値と見なされる場合 (したがって、未定義または null と同等) に使用できます。
typeof variable == 'undefined'
指定された null が、初期化されていない変数またはプロパティに対して明確な意味を持つ場合に使用できます。このチェックはスローされず、エラーは変数が宣言されていません。