显然,这在我的Firebug控制台中是相同的:
var x = "A", y = x;
x + y === "AA";
和
var x = y, y = "A";
x + y === "AA";
这是标准的ECMAScript行为,订单在逗号分隔的var
作业中不起作用吗?
编辑:“神秘”已经解决。我先测试了第一个例子,然后清理了控制台并运行了第二个例子。但是,目前已定义y
和x
。如果你运行David Thomas提供的JSFiddle,你总会得到一个“undefinedA”。案件已经解决。
答案 0 :(得分:6)
var x = y;
, y
将引发异常。
但是,window对象是嵌入浏览器的Javascript解释器的默认上下文。如果您之前发布过:
y = "A";
然后您实际将"A"
分配给window.y
,因此var x = y;
生效并将window.y
分配给x
。