这与"var" or no "var" in JavaScript's "for-in" loop?有关(但更多关于范围的讨论 - 这个问题与范围无关)
循环通过对象或数组更有效/更常见,为什么?
选项1 - 设置var outside loop
// Object
var x;
for (x in obj) { ... }
// Array
var i;
for (i = 0; i < array.length; ++i) { ... }
选项2 - 在循环中设置var
// Object
for (var x in obj) { ... }
// Array
for (var i = 0; i < array.length; ++i) { ... }
答案 0 :(得分:6)
var
被提升并且作用于函数,而不是块,因此编译器将优化差异。
第二个稍快一点,因为通过线路发送的字符较少。这种差异不足以成为决定使用哪种因素的影响因素。
答案 1 :(得分:0)
实际上,最快的方法是将BACKWARDS循环遍历列表(确保在影响结果时不执行此操作)。 见Are loops really faster in reverse?
var i = arr.length; //or 10
while(i--)
{
}
至于var问题,你可以在外面声明它,只要你还没有使用那个名字/重置值/之后删除引用。