0

我搜索了这个问题,但我得到的答案并没有解决我的问题。这是我的问题,我有一个包含 10 个成员的数组。

JS代码

var array = [1,2,3,4,5,6,7,8,9,10];

循环 1:

for(var i=0,len=array.length;i<len;i++){};

循环 2

var len = array.length;
for(var i=0;i<len;i++){};

循环 3

for(var i=0;i<array.length;i++){}

我知道 1 和 3 之间存在主要的性能差异。但是,1 和 2 之间有什么性能差异吗?.

4

4 回答 4

0

不,没有任何区别。Javascript 将提升变量。

所以code1将是:

var i, len;
for (i=0, len=array.lengh; i<len; i++) {};

代码2将是

var i, len;
len = array.lengh;
for (i=0; i<len; i++) {};

不同的只是放在哪里len=array.length

于 2012-11-01T12:07:42.370 回答
0

应该没有任何明显的区别,尽管在示例 2 中解析逻辑还有一个要解析的标记。

越短越好:var a,b,c,d;应该比

var a; var b; var c; var d;
于 2012-11-01T12:07:52.917 回答
0

Loop-1 和 Loop-2 都是相同的,因为 var len 有一次 Initialize ,因此性能没有差异。

于 2012-11-01T12:10:22.537 回答
0

Javascript 具有函数作用域,而不是块作用域(不包括新let语法)。由于 for 循环不是函数,因此它不会创建新范围,这意味着

for (var i...) { ... }

完全一样

var i...
for (...) { ... }

但是,for 循环的条件语句在 javascript 中的每次迭代都会重新评估,这意味着

for(var i=0;i<array.length;i++){}

将需要array.length多次评估,而这

var len = array.length;
for(var i=0;i<len;i++){};

一次评估一次。从理论上讲,它更快,但它是一种微优化,它并不重要。

于 2012-11-01T12:24:47.757 回答