2

为了简单起见,坐在我的办公桌前想知道(在 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();
4

2 回答 2

4

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

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

这是一个测试

但是如果没有缓存,从循环中移动 var 定义会更快一些

于 2013-10-29T09:22:47.993 回答
2

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

显然,第一个更快。

但是由于 JavaScript 没有块作用域,i在这两种情况下仍然可以在循环之外使用,如果你稍后忘记初始化它,你可能会出错。

于 2013-10-29T09:24:54.727 回答