考虑同一循环迭代的两个版本:
for (var i = 0; i < nodes.length; i++) {
...
}
Run Code Online (Sandbox Code Playgroud)
和
var len = nodes.length;
for (var i = 0; i < len; i++) {
...
}
Run Code Online (Sandbox Code Playgroud)
后者的版本无论如何比前者快吗?
我读到建议通过在循环头中每次迭代不读取数组的length属性来优化JavaScript 中的循环.
所以,我们应该这样做:
var names = ['George','Ringo','Paul','John'];
for(var i=0,j=names.length;i<j;i++){// Read array length once and assign it to a variable
doSomeThingWith(names[i]);
}
Run Code Online (Sandbox Code Playgroud)
而不是这个:
var names = ['George','Ringo','Paul','John'];
for(var i=0;i<names.length;i++){
doSomeThingWith(names[i]);
}
Run Code Online (Sandbox Code Playgroud)
但是,我创建了一个小的测试用例来比较这两种技术,但有时第一种情况更快,有时第二种情况更快.
你会推荐哪个版本?