为了保持简单,请坐在我的办公桌前,想知道(在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();
答案 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
仍然可以在循环中使用,如果您忘记稍后启动它,则可能会出错。