JavaScript函数级作用域
在下面的示例中,是否通过for..In循环为每个迭代创建了一个新变量“y”?还是将变量声明提升到函数顶部,并在每次迭代中重复使用JavaScript函数级作用域,javascript,Javascript,在下面的示例中,是否通过for..In循环为每个迭代创建了一个新变量“y”?还是将变量声明提升到函数顶部,并在每次迭代中重复使用 function example() { var x; for(x in obj) { var y = obj[x]; } } 谢谢,因为for循环对作用域没有影响,所以它被提升。y是被替换的同一个变量。做一个你会用的新的 function example() { var x; var y= new Array
function example() {
var x;
for(x in obj) {
var y = obj[x];
}
}
谢谢,因为for循环对作用域没有影响,所以它被提升。y是被替换的同一个变量。做一个你会用的新的
function example() {
var x;
var y= new Array;
for(x in obj) {
y[x] = obj[x];
}
}
你可以:
一个带有文本
Tao
的警报框将出现,表明y
可在for
循环的范围之外访问。我想,只是想确定一下。谢谢。恐怕这样不对。如果将循环分成两条语句:var y
和y[x]=obj[x]
,然后读取这两条语句之间的y
值,您会发现y
仍然包含数组。也就是说,它不是一个新的未定义变量。y应该仍然包含obj数组项,但现在y可以索引obj数组中的每个项。我相信他在问y是否只保存obj数组中的最后一项。这是正确的,通过使用y[x]y将包含与obj相同的数组。那么为什么要使用var
关键字呢?我的错误。当我复制他的代码var y[x]=obj[x]时,我没有意识到y已经被定义了;
var obj = {
name: "Dan",
surname: "Tao"
};
var x;
for (x in obj) {
var y = obj[x];
}
alert(y);