3

如果尚未定义但发现一个奇怪的问题,我想将变量定义为默认值。

var x = x || {}工作而x = x || {}给出错误。

萤火虫的输出。

>>> 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]   

为什么第一个给出错误而第二个似乎通过了。

4

1 回答 1

0

只需使用var. 除了旧 IE 版本上的错误之外,添加 IE 会为var您保存一条错误消息,并清楚表明您没有假设它在其他地方声明。

在那些旧版本的 IE 上,

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

typeof检查可防止“未声明的变量”错误。

于 2012-08-12T16:56:29.933 回答