2011-09-28 5 views

答えて

72
if (typeof variable !== 'undefined') { 
    // .. 
} 
else 
{ 
    // .. 
} 

ようなものを使用することができ、ここでより詳細な説明を見つける:

JavaScript isset() equivalent

+3

厳密な比較とパフォーマンスの向上のために!==を使用してください。 –

+1

@ 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

+0

'typeof null'が' Object'であるために失敗します – nikjohn

0

あなたはこの

if (typeof varname != 'undefined') 
    { 
     //do this 
    }  
    else 
    { 
     //do this 

    } 
3

あなたは、単に種類を確認。

if(typeof yourVar !== "undefined"){ 
    alert("defined"); 
} 
else{ 
    alert("undefined"); 
} 
6

inオペレータを使用してください。場合

'myVar' in window; // for global variables only 

typeofチェックは、定義された定義及び値undefinedを有し、又は

  • されていることが
  • 定義されていない、変数の

    1. がtrueを返しますまだ初期化されていません。

    次の例では、2番目と3番目の点を説明します。

    // defined, but not initialized 
    var myVar; 
    typeof myVar; // undefined 
    
    // defined, and initialized to undefined 
    var myVar = undefined; 
    typeof myVar; // undefined 
    
  • +0

    グローバル変数の特殊なケースでのみ、*をウィンドウ*で使うことができます。ローカル変数には、そのようなaccssible変数オブジェクトはありません。ウィンドウオブジェクトがあると仮定すると、ブラウザにとっては合理的かもしれませんが、一般的には必ずしも真実ではありません。 – RobG

    +1

    @RobG - ウィンドウやグローバルオブジェクトである必要はありません。代わりに、どんなオブジェクトもここで使用できます。ここではローカルで定義された変数についてはここではアクセスできないという良い点を挙げました。私が持っている最初の基準に基づいてローカル変数の未定義を判断する方法があるかどうかを調べることに興味があります。 – Anurag

    +0

    変数とスコープについては、グローバル変数(グローバルオブジェクトのプロパティ)とそれ以外の変数のみを区別できます。ネストされた関数では、関連する変数オブジェクトにアクセスすることができないため、識別子がローカル変数または外部関数変数であるかどうかを判断することは不可能です。オブジェクトプロパティの解決は別のものです。 – RobG

    関連する問題