哪个更有效率? (JavaScript循环的变量)

时间:2013-10-29 09:19:25

标签: javascript variables for-loop performance

为了保持简单,请坐在我的办公桌前,想知道(在JavaScript中)效率是否存在差异:

var i = 0;

for(i=0; i<Something.length; i++) foo();

for(i=0; i<Something.length; i++) foo();

和...

for(var i=0; i<Something.length; i++) foo();

for(var i=0; i<Something.length; i++) foo();

2 个答案:

答案 0 :(得分:4)

这个会更快,你会在变量中缓存Something.length,因此在循环期间不会被解释:

for(var i=0, len = Something.length; i<len; i++) foo();

这是test

但是如果不缓存

,从循环中移动var定义会更快一些

答案 1 :(得分:2)

我尝试了1000000次循环,第一次运行2.7秒,第二次运行2.418秒。

显然,第一个更快。

但是由于JavaScript没有块范围,因此在这两种情况下i仍然可以在循环中使用,如果您忘记稍后启动它,则可能会出错。