JavaScript函数级范围

时间:2011-07-25 22:44:58

标签: javascript

在下面的示例中,是否为通过for..in循环的每次迭代创建了一个新变量'y'?或者是变量声明被提升到函数的顶部,并重复用于每次迭代?

function example() {
    var x;
    for(x in obj) {
       var y = obj[x];
    } 
}

由于

3 个答案:

答案 0 :(得分:3)

它被悬挂,因为for循环对范围没有影响。

答案 1 :(得分:0)

y是被替换的相同变量。制作一个你会用的新作品

function example() {
    var x;
    var y= new Array;
    for(x in obj) {
       y[x] = obj[x];
    } 
}

答案 2 :(得分:0)

你可以test this for yourself

var obj = {
  name: "Dan",
  surname: "Tao"
};

var x;
for (x in obj) {
  var y = obj[x];
}
alert(y);

系统会显示一个警告框,其中包含Tao文字,表示y循环范围之外的for可以访问。