为了简单起见,坐在我的办公桌前想知道(在 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();
为了简单起见,坐在我的办公桌前想知道(在 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();
这会更快,您将缓存Something.length
在变量中,因此它不会在循环期间被解释:
for(var i=0, len = Something.length; i<len; i++) foo();
这是一个测试
但是如果没有缓存,从循环中移动 var 定义会更快一些
我尝试了 1000000 次循环,第一次运行 2.7 秒,第二次运行 2.418 秒。
显然,第一个更快。
但是由于 JavaScript 没有块作用域,i
在这两种情况下仍然可以在循环之外使用,如果你稍后忘记初始化它,你可能会出错。