Bol*_*wyn 12 javascript variables variable-assignment
显然,这在我的Firebug控制台中是相同的:
var x = "A", y = x;
x + y === "AA";
Run Code Online (Sandbox Code Playgroud)
和
var x = y, y = "A";
x + y === "AA";
Run Code Online (Sandbox Code Playgroud)
这是标准的ECMAScript行为,订单在逗号分隔的var分配中不起作用吗?
编辑: "神秘"得到解决.我先测试了第一个例子,然后清理了控制台并运行了第二个例子.然而,在这个时候,y和x已经被定义.如果你运行David Thomas提供的JSFiddle,你总会得到一个"undefinedA".案件已经解决
var x = y;如果y没有定义,将引发异常.
但是,window对象是嵌入浏览器的Javascript解释器的默认上下文.如果你以前发过:
y = "A";
Run Code Online (Sandbox Code Playgroud)
然后你实际分配"A"给window.y,因此var x = y;变得有效并分配window.y给x.