js之实现for-in/of循环对象

发布时间 2023-08-09 15:09:50作者: pwindy

1.in/of对比

for...in...是es5出的循环方法,for...of...是es6推出的。两个都是迭代数据的。

  • for...in:以任意顺序迭代对象的可枚举属性。=> 根据key值来遍历
  • for...of...:遍历可迭代对象,定义要迭代的数据。

2.for...in...

//表现
let obj = {  a: 1, b: '2',  c: false, d: undefined,  e(){}, f: {  } };
obj.z = "zzz";
for(let key in obj){
  console.log(key);
}
//a  b  c  d e  f  z =>这说明for in 是根据key值遍历

2.1.mdn上对for...in...的解释

 mdn的解释,可以作如下理解:

  1. for...in...不推荐遍历有索引对象(即,数组)
  2. for...in...适合用作检测对象是否存在某属性值时
  3. for...in...循环会遍历所有可枚举属性,而在es5之前,所有给对象原型新添加的方法都是可枚举的

3.for...of...

//表现
let array = [false, 1,"2", undefined, {}, function(){}];
for (let item of  array){
   console.log(item);
}
//false, 1, 2, undefined,  {}, ƒ (){} => 不难看出

3.1.mdn上对for...of...的解释

 mdn的解释,可以作如下理解:

可迭代对象都可以使用for...of...遍历循环

 4.for...in...和for...of...使用区别

  • for...in...:遍历具有key值的对象
  • for...of...:遍历可迭代对象

 

参考---https://blog.csdn.net/weixin_44395929/article/details/109625882