3

まだ定義されていないが奇妙な問題が見つかった場合、変数をデフォルト値に定義したいと思います。

var x = x || {}動作しますx = x || {}が、エラーが発生します。

firebug からの出力。

>>> a = a || {};
ReferenceError: a is not defined
[Break On This Error]   
a = a || {};
with(_... {}; }; (line 2)
>>> var b = b || {};
undefined

>>> b;
Object {}
>>> a;
ReferenceError: a is not defined
[Break On This Error]   

2番目のエラーが発生したように見えるのに、最初のエラーが発生するのはなぜですか。

4

1 に答える 1

0

を使用するだけvarです。古い IE バージョンのバグを除いて、 を追加するvarとエラー メッセージが保存され、他の場所で宣言されていると想定していないことが明確になります。

古いバージョンの IE では、

x = (typeof x !== 'undefined' && x) || {}

typeofチェックにより、「宣言されていない変数」エラーが防止されます。

于 2012-08-12T16:56:29.933 に答える