for in 和 for of
- for in
- 以任意顺序遍历对象的可枚举属性 (enumerable properties),包括对象从其构造函数原型中继承的属性。
- for of
- 遍历 可迭代对象(iterable object) 定义的可迭代的数据 ,比如遍历 Array,Map,Set,String,TypedArray,arguments 等对象的数据。
for in遍历数组
- for in 遍历的是对象的可枚举属性,包括对象自身及从原型链继承而来的属性。
/**
* 遍历数组
* @type {Array}
*/
Object.prototype.objCustom={};
Array.prototype.arrCustom={};
var arr =[1,2,3,4];
arr.name='jack';
for(var value in arr){
console.log(value);//0 1 2 3 name arrCustom objCustom
}
0、1、2、3是索引值,name是自身的属性,arrCustom是继承自Array的属性,objCustom是继承自Object的属性。
for of 遍历数组
- for of遍历iterable object定义的可迭代的数据
Object.prototype.objCustom={};
Array.prototype.arrCustom={};
var arr =[1,2,3,4];
arr.name='jack';
for(var value of arr){
console.log(value);//1 2 3 4
}
1、2、3、4 是数组元素,并没有遍历自身及继承的属性
#总结
- for in用来遍历对象的可枚举属性,因为遍历顺序取决于宿主环境
- for of用来遍历iterable object,比如Set、Map、String、Array及类似Array的arguments、NodeList
#参考
原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/20302.html