0

これは私を怒らせています: もし私がこれをしなければ:

var a;

そして、これを行います:

if(a){
    // doing stuff
}

このエラーが吐き出されます:

ReferenceError: a is not defined

では、変数が定義されているかどうかを確認するにはどうすればよいでしょうか。

を使うように言わないでくださいtypeof

編集:

aライブラリによって定義されることがあります。ライブラリで定義されているかどうかを確認したいので、そうでない場合は定義して、コードで引き続き使用できるようにします。

4

4 に答える 4

3

次のようにReferneceErrorをスローせずに未定義をチェックします。

if (typeof window.a == "undefined") {
    // do something
}
于 2012-07-25T16:24:29.537 に答える
2

が宣言されていることを確認し、a参照エラーの問題を引き起こさないようにする場合。再宣言文を追加することができます。

var a = a;

この場合、 a が定義されていれば何も変化しません。それ以外の場合は未定義です。

注意: これaは、グローバル スコープ内にある場合にのみ機能します。詳細については、コメントを確認してください。

于 2012-07-25T16:29:25.210 に答える
0

これの何が問題になっていますか

if(typeof a!='undefined')
{
    // a is defined
}
else
{
    // a is not defined
}

更新:または、使用することができます

if(a==void 0) // undefined
于 2012-07-25T16:32:50.413 に答える
0

または、これを試すことができます:

if( !window.hasOwnProperty('a') ){    
    window.a = 'some definition here';
}
于 2012-07-25T16:51:39.047 に答える