[js基础]for...in, for...of,forEach的区别

108 阅读1分钟

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