我想将变量定义为默认值(如果尚未定义)但发现了一个奇怪的问题。
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]
为什么第一个出现错误而第二个出现错误。
答案 0 :(得分:0)
只需使用var
即可。除了旧IE版本的错误之外,添加var
会为您保存一条错误消息,并明确表示您并未假设它已在其他地方声明。
在那些旧版本的IE上,
x = (typeof x !== 'undefined' && x) || {}
typeof
检查会阻止“未声明的变量”错误。