三种for循环
1.【普通】for循环
for(var i = 0;i < arr.length;i++){
console.log(arr[i]);
}
2.【加强版】for循环
for(var i = 0,len = arr.length;i < len;i++){
console.log(arr[i]);
}
3.【for-in循环】
fir(var i in arr){
console.log(arr[i]);
}
时间对比
通过以下代码来计算三个循环的运行时间
function test1(){
var arr = new Array(1000000);
var date1 = new Date();
for(var i =0;i<arr.length;i++){
arr[i]=0;
}
var date2 = new Date();
for(var i =0,j=arr.length;i<j;i++){
arr[i]=1;
}
var date3 = new Date();
for(var i in arr){
arr[i]=2;
}
var date4 = new Date();
var for1_time = (date2 - date1);
var for2_time = (date3 - date2);
var for3_time = (date4 - date3);
console.log(for1_time); //Firefox:10 Chrome:34
console.log(for2_time); //Firefox:4 Chrome:5
console.log(for3_time); //Firefox:750 Chrome:516
}
test1();
结论
1.三者循环的时间关系
加强for循环 < 普通for循环<for-in
循环
2.分析:
2.1.加强for循环之所以运行时间最短是因为,它相对于普通for循环,少了每一次循环都需要的方法解析(arr.length)
2.2虽然用for…in来迭代Array元素很看起来很方便,但是它返回的除了数字索引外还有可能是你自定义的属性名字。因此还是用带有数字索引的传统的for 循环来迭代一个数组比较好。因为如果你想改变数组对象,比如添加属性或者方法,for…in 语句迭代的是自定义的属性而不是数组的元素。