显然这在我的 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”。案件结案。
最佳答案
var x = y;
如果未定义 y
将引发异常。
然而,window object 是浏览器中嵌入的 Javascript 解释器的默认上下文。如果您之前发布过:
y = "A";
然后你实际上将 "A"
分配给了 window.y
,因此 var x = y;
变得有效并分配了 window .y
到 x
。
关于javascript - Javascript 中的变量赋值顺序是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7031843/