2016-12-07 12 views
0

まあ、私の質問は、変数がJavascriptに存在するかどうかを確認する最も良い方法は?

例は明白である:

デフォルト値undefinedaを定義します。

:私は a varが存在するかどうかを確認したい場合は、私がしようとします

var a; 

しかし、この場合、aがあり、aの値はundefinedですが、boolean evaluationこれはfalseです。

var a; // default value is 'undefined' 
 
if (a) { 
 
    alert('a exists'); 
 
} else { 
 
    alert("a don't exists") 
 
}

私はまた、次の例を試すことができますが、この例では、エラーを生成します。

// var a; 
 
// a is not defined 
 
if (a) { 
 
    alert('a exists'); 
 
} else { 
 
    alert("a don't exists") 
 
}

そして、この例では、私はtypeofてみてください。しかし、aはデフォルトでundefinedの値で定義されています。

var a; 
 
if (typeof a != 'undefined') { 
 
    alert('a exists'); 
 
} else { 
 
    alert("a don't exists") 
 
}

そして、この例では

console.log ('var a exists:', window.hasOwnProperty('a'));

変数が実際に存在するとなぜかどうかを確認するための最良の方法は何ですか?

ありがとうございました。

+2

[JavaScriptの変数が存在する場合(初期化/定義されている)を確認(http://stackoverflow.com/questions/5113374/javascript-check-if-variable-existsの可能な重複-is-defined-initialized) – Dekel

+0

デフォルトで変数aが未定義の場合、(typeof a == "undefined")をチェックします。 – MCMXCII

+0

最初は 'a === undefined'です。 2番目の場合、lintersを使って開発者コンソールを見て、 'var a'を忘れたバグを修正することができます。有用なエラーメッセージを隠す不要な 'typeof'ハックを使用しないで、バグを検出しないようにしてください。 –

答えて

3

変数にJSの3つの可能性があります。

  1. 変数 'a'はまったく宣言されていません。
  2. 変数 'a'は宣言されていますが、未割り当てです(未定義)。例:var a;
  3. 変数 'a'は宣言されていますが、空またはnullが割り当てられています。 (可能性のあるシナリオでは、変数はバックエンドから値を取得しようとした場合)
    例: var a=null; var a='';

次の条件を使用することをお勧めし、その後、0以外またはfalse変数の値を、期待している場合。もちろん、あなたの必要性に基づいており、変数やオブジェクトの値が不明な場合は、常にtryブロック& catchブロックで囲みます。

//var a; 
 
//var a=null; 
 
//var a=''; 
 
//var a=0; 
 
//var a='value'; 
 

 
if (typeof a != "undefined" && a) { 
 
    alert("a is defined AND a is TRUE value"); 
 
} else { 
 
    alert("a not exist OR a is a FALSE value"); 
 
}

関連する問題