3

这与JavaScript 的“for-in”循环中的“var”或没有“var”有关吗?(但更多地谈论范围 - 这个问题不是关于范围)

循环遍历对象或数组是否更有效/更常见,为什么?

选项 1 - 在循环外设置 var

// 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) { ... }
4

2 回答 2

6

var被提升并被限定为函数,而不是块,因此编译器将优化差异。

第二个稍微快一些,因为通过网络发送的字符更少。这种差异不足以成为您决定使用哪个的影响因素。

于 2012-05-10T19:10:07.510 回答
0

实际上,最快的方法是在列表中循环 BACKWARDS(确保在影响结果时不要这样做)。请参阅反向循环真的更快吗?

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

}

至于 var 问题,只要您尚未使用该名称/重置值/之后删除引用,就可以在外部声明它。

于 2012-05-10T19:11:27.590 回答