我从书中学到,你应该这样写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
}
请看这篇文章的完整比较
其他回答
我在这里有个测试。检查这个! https://gist.github.com/DungGramer/7efdfefecaa1b8f5d6510202524dc751
我的结果:
pop是最快的,forEach的可读性和速度最好 while比for快 如果没有条件,循环更快(如if) i是最快的
试试这个:
var myarray =[],
i = myarray.lenght;
while(i--){
// do somthing
}
基本的while循环通常是最快的。Jsperf.com是测试这类概念的一个很好的沙盒。
https://jsperf.com/fastest-array-loops-in-javascript/24
现在是2022年底
有时根本没有用数组长度计算:
如果你有一个索引为var myArray =[1,2,3,4,25,99999999999999]的数组,使用任何索引为1的槽数组(包括forEach)的解决方案都是非常缓慢的。
对我来说,最好的解决方案是:
for(let _i in myArray ) {
if(myArray[_i]) {
(function(s) {
///
})(myArray[_i])
}
}
循环javascript数组的最快方法是:
var len = arr.length;
while (len--) {
// blah blah
}
请看这篇文章的完整比较