Javascript变量范围未定义

时间:2012-08-12 16:52:49

标签: javascript

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

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]   

为什么第一个出现错误而第二个出现错误。

1 个答案:

答案 0 :(得分:0)

只需使用var即可。除了旧IE版本的错误之外,添加var会为您保存一条错误消息,并明确表示您并未假设它已在其他地方声明。

在那些旧版本的IE上,

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

typeof检查会阻止“未声明的变量”错误。