我从书中学到,你应该这样写for循环:
for(var i=0, len=arr.length; i < len; i++){
// blah blah
}
所以arr。每次不计算长度。
其他人说编译器会做一些优化,所以你可以这样写:
for(var i=0; i < arr.length; i++){
// blah blah
}
我只是想知道在实践中哪种方法是最好的?
我从书中学到,你应该这样写for循环:
for(var i=0, len=arr.length; i < len; i++){
// blah blah
}
所以arr。每次不计算长度。
其他人说编译器会做一些优化,所以你可以这样写:
for(var i=0; i < arr.length; i++){
// blah blah
}
我只是想知道在实践中哪种方法是最好的?
当前回答
循环javascript数组的最快方法是:
var len = arr.length;
while (len--) {
// blah blah
}
请看这篇文章的完整比较
其他回答
这似乎是目前为止最快的方法……
var el;
while (el = arr.shift()) {
el *= 2;
}
考虑到这将消耗数组,吃掉它,不留下任何东西……
如果您想要一个更快的for循环,请在循环之外定义变量并使用下面的语法
const iMax = lengthOftheLoop;
var i = 0;
for (; i < iMax; i++) {
console.log("loop"+i);
}
参考:https://medium.com/kbdev/voyage - - -最有效循环- - nodejs和位- js - 5961 d4524c2e
我总是用第一种体裁写作。
即使编译器足够智能,可以为数组优化它,但如果我们在这里使用DOMNodeList或一些计算长度的复杂对象,它仍然是智能的?
我知道关于数组的问题是什么,但我认为用一种风格编写所有循环是一个很好的实践。
var arr = []; // The array
var i = 0;
while (i < arr.length) {
// Do something with arr[i]
i++;
}
i++比++ I,——I和I——快
此外,您可以保存最后一次需要访问i时执行arr[i++]的最后一行(但这可能很难调试)。
您可以在这里(使用其他循环测试)测试它:http://jsperf.com/for-vs-whilepop/5
循环javascript数组的最快方法是:
var len = arr.length;
while (len--) {
// blah blah
}
请看这篇文章的完整比较