1.for...in
是ES5的标准,该方法遍历的是对象的(key:键名)
Array对象也是一个对象,数组中的每个元素的索引被视为属性名称,所以在使用for...in遍历Array时,拿到的是每个元素索引
2.for...of
ES6的标准,该方法遍历的是对象的属性所对应的值(value:键值)。所以它用来遍历数组时得到每个元素的值
- 遍历数组
var arr=['a','b','c'];
arr.hobby = 'foosball';
for(let i in a){
console.log(i); //0 1 2 hobby
console.log(a[i]); //a b c foosball
}
for(let i of a){
console.log(i); //a b c
}
- 遍历对象
for...of不能直接遍历对象,需要借助 Object.keys()进行使用
var s={a:1,b:2,c:3};
for(let prop of s){
console.log(prop);//报错如下 Uncaught TypeError: s is not iterable
}
for(let prop of Object.keys(s)){
console.log(prop);// a b c
console.log(s1[prop]);//1 2 3
}
3.forEach
forEach() 方法对数组的每个元素执行一次提供的函数。返回值是underfinend
forEach方法中的function回调有三个参数:
第一个参数是遍历的数组内容,
第二个参数是对应的数组索引,
第三个参数是数组本身
var arr = [1,2,3,4];
var sum =0;
var a = arr.forEach(function(value,index,array){
array[index] == value; //结果为true
sum+=value;
});
console.log(sum); //结果为 10
console.log(a) // underfiend