JavaScript的“for-in”循环中是“var”还是没有“var”?

在JavaScript中为in循环编写的正确方法是什么?浏览器不会对我在这里展示的两种方法中的任何一种提出投诉。首先,有一种方法明确声明迭代变量x

用于(变量x在集合中){
...
}

或者,这种方法读起来更自然,但在我看来并不正确:

用于(x在集合中){
...
}

使用var,它会缩小变量的范围,否则变量会查找最近的闭包,搜索var语句。如果它找不到var,则它是全局变量(如果您处于严格模式,使用严格的,则全局变量会抛出错误)。这可能导致如下问题

函数f(){
对于(i=0;i<5;i++);
}
var i=2;
f();
警报(一)//i==5。我应该2岁了

如果在for循环中写入var i,则警报显示2

JavaScript范围界定和提升

发表评论