JavaScript中for...in、for...of 和 forEach 有什么区别?

        近期有哪些热门开源项目?icon-default.png?t=O83Ahttps://awesometop.cn/hotlist

        JavaScript中for...in、for...of 和 forEach都是用于对象遍历,但适用的对象类型有所区别和限制。下面通过几个示例来直观看下。

1.forEach

forEach()是Array的原型方法,因此,forEach只能迭代数组,但它可以在迭代时访问每个元素的值和索引。

['a', 'b', 'c'].forEach(
  val => console.log(val)     // a, b, c (array values)
);

['a', 'b', 'c'].forEach(
  (val, i) => console.log(i)  // 0, 1, 2 (array indexes)
);

2.for...in

for...in用于迭代对象的所有可枚举属性,包括继承的可枚举属性。for...in可以迭代数组、字符串或普通对象,但不能迭代Map和Set对象

for (let prop in ['a', 'b', 'c'])
  console.log(prop);            // 0, 1, 2 (array indexes)

for (let prop in 'str')
  console.log(prop);            // 0, 1, 2 (string indexes)

for (let prop in {a: 1, b: 2, c: 3})
  console.log(prop);            // a, b, c (object property names)

for (let prop in new Set(['a', 'b', 'a', 'd']))
  console.log(prop);            // undefined (no enumerable properties)

3.for...of

for...of用于迭代可迭代对象,迭代它们的值而不是它们的属性。for...of可以迭代数组、字符串、Map或Set对象,但不能迭代普通对象

有关迭代器,可以查看:JS代码片段-手搓一个迭代器

for (let val of ['a', 'b', 'c'])
  console.log(val);            // a, b, c (array values)

for (let val of 'str')
  console.log(val);            // s, t, r (string characters)

for (let val of {a: 1, b: 2, c: 3})
  console.log(prop);           // TypeError (not iterable)

for (let val of new Set(['a', 'b', 'a', 'd']))
  console.log(val);            // a, b, d (Set values)

总体来说,forEach只能迭代数组,for...in不能迭代Map和Set对象,for...of不能迭代普通对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农界的小蜜蜂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值