for
循环实施之间的差异(速度,性能,副作用......):
之间
var i;
for(i = 0; i < length; i++){ //Do something}
// more code
和
for(var i = 0; i < length; i++){ //Do something}
// more code
和
for(i = 0; i < length; i++){ //Do something}
// more code
和
之间var e;
for( e in array){ //Do something}
// more code
和
for(var e in array){ //Do something}
// more code
和
for(e in array){ //Do something}
// more code
答案 0 :(得分:2)
没有区别。
JavaScript变量只有函数范围,虽然你可以在var
循环的初始化部分放置一个for
语句,但实际上声明是“hoisted”到顶部范围使得当您的第二个案例运行时,它们的处理方式与第一个案例完全相同。
编辑:由于您在之后更新了问题,因此您在不使用var
关键字的情况下添加的第三种语法意味着变量i
(或e
)将作为全局创建 - 除非它已作为全局存在,在这种情况下,现有变量将被覆盖。全局变量访问比局部变量访问慢。
注意:我对这个问题的解释是它没有将循环标准与for..in变量进行比较,它只是将不同的变量声明方法相互比较用于标准for循环,然后做同样的事情。再次为for..in循环。
答案 1 :(得分:2)
与你的计数器变量的声明没有区别。
但始终使用 <{strong> var
否则他们会污染javascript已经很脏的全局范围......
至于for...in
与传统for
look here...
(这是我对重复问题的回答...... )
答案 2 :(得分:0)
是的,javascript中for循环和for / in循环之间存在差异。这是不同的
考虑这个数组
var myArr = ["a", "b", "c"];
后来,我在这个数组中添加了一个元素,但是以不同的方式,如下:
myArr[myArr.length + 1] = "d";
此时,如果你是console.log那么这就是数组的样子
["c", "b", "a", undefined × 1, "d"]
现在,让我们使用for和for / in循环遍历数组,看看有什么区别: 首先,让我们试试for循环
for(var i = 0; i != myArr.length; i++) { // note, i used " != " instead of " < ". Yes this is faster.
console.log(myArr[i]);
}
// output will look like this:
// "a"
// "b"
// "c"
// undefined × 1
// "d"
// - This still shows the undefined value in the array.
现在,让我们看一下for / in循环
for(key in myArr) {
console.log(myArr[key]);
}
// array will look like:
// "a"
// "b"
// "c"
// "d"
// This will skip the undefined value.
差异1 :使用for / in循环时,javascript解释器将跳过所有null或undefined的值。此外,for / in循环将所有值(如果遇到原始值)转换为其等效的包装器对象。因为for循环没有这样做。
差异2 :当使用for循环时,我们在循环中声明了变量i,如果在该函数中写入for循环,则此变量将在函数范围内。这意味着,在函数结束之前,变量i仍然可用,甚至在for循环之外,但在该函数内。在for / in循环的情况下,&#34;键&#34;的范围。在for / in循环停止执行后,变量立即死亡,这意味着内存利用率会降低。