在for循环中使用var关键字

时间:2012-05-10 19:07:30

标签: javascript performance coding-style standards

这与"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) { ... }

2 个答案:

答案 0 :(得分:6)

var被提升并且作用于函数,而不是块,因此编译器将优化差异。

第二个稍快一点,因为通过线路发送的字符较少。这种差异不足以成为决定使用哪种因素的影响因素。

答案 1 :(得分:0)

实际上,最快的方法是将BACKWARDS循环遍历列表(确保在影响结果时不执行此操作)。 见Are loops really faster in reverse?

var i = arr.length; //or 10
while(i--)
{

}

至于var问题,你可以在外面声明它,只要你还没有使用那个名字/重置值/之后删除引用。