変数が定義されているかどうかをテストする必要がありますか?変数がjavascriptで定義されているかどうかをテストしますか?
if //variable is defined
//do this
else
//do this
変数が定義されているかどうかをテストする必要がありますか?変数がjavascriptで定義されているかどうかをテストしますか?
if //variable is defined
//do this
else
//do this
if (typeof variable !== 'undefined') {
// ..
}
else
{
// ..
}
ようなものを使用することができ、ここでより詳細な説明を見つける:
あなたはこの
if (typeof varname != 'undefined')
{
//do this
}
else
{
//do this
}
あなたは、単に種類を確認。
if(typeof yourVar !== "undefined"){
alert("defined");
}
else{
alert("undefined");
}
in
オペレータを使用してください。場合
'myVar' in window; // for global variables only
typeof
チェックは、定義された定義及び値undefined
を有し、又は
次の例では、2番目と3番目の点を説明します。
// defined, but not initialized
var myVar;
typeof myVar; // undefined
// defined, and initialized to undefined
var myVar = undefined;
typeof myVar; // undefined
グローバル変数の特殊なケースでのみ、*をウィンドウ*で使うことができます。ローカル変数には、そのようなaccssible変数オブジェクトはありません。ウィンドウオブジェクトがあると仮定すると、ブラウザにとっては合理的かもしれませんが、一般的には必ずしも真実ではありません。 – RobG
@RobG - ウィンドウやグローバルオブジェクトである必要はありません。代わりに、どんなオブジェクトもここで使用できます。ここではローカルで定義された変数についてはここではアクセスできないという良い点を挙げました。私が持っている最初の基準に基づいてローカル変数の未定義を判断する方法があるかどうかを調べることに興味があります。 – Anurag
変数とスコープについては、グローバル変数(グローバルオブジェクトのプロパティ)とそれ以外の変数のみを区別できます。ネストされた関数では、関連する変数オブジェクトにアクセスすることができないため、識別子がローカル変数または外部関数変数であるかどうかを判断することは不可能です。オブジェクトプロパティの解決は別のものです。 – RobG
厳密な比較とパフォーマンスの向上のために!==を使用してください。 –
@ AmericanYak-in * typeof * ['=='](http://ecma-international.org/ecma-262/5.1/#sec-11.9.3)を解決するためのアルゴリズムをテストし、['=== '](http://ecma-international.org/ecma-262/5.1/#sec-11.9.6)は両方の値が同じType(文字列)を持つので同一です。より良いパフォーマンスはどこから来ますか? – RobG
'typeof null'が' Object'であるために失敗します – nikjohn