将变量名称分配给相同的变量名称

时间:2013-07-08 07:00:58

标签: javascript variables

执行

var a=b=c=d=e=f=a; 
//no error(a has not initialize before)

var x=y;
//ReferenceError: y is not defined

第一个代码如何才能执行,就好像a之前已经初始化一样。

2 个答案:

答案 0 :(得分:11)

这是因为可变吊装。 var x = EXPR;实际上已转换为:

// beginning of the block (function/file)
var x; // === undefined
// ...
// the actual position of the statement
x = EXPR

对于您的示例,这意味着:

var a;  // === undefined
a = b = c = d = e = f = a;

请注意,只有a使用var声明 - 所以你要创建大量的全局变量总是坏事

答案 1 :(得分:5)

您的第一个陈述就像是

var a = undefined; 
a = window.b = window.c = window.d  = window.e = window.f = a; 

其中a是已定义的,而其他是全局范围的。假设您执行了一个函数。

(function(){
  var a=b=c=d=e=f=a; 
  b = 10;
}());

b可以在外面访问。

在第二个var x=y中,y尚未定义