js之for...of...循环遍历可迭代对象

本文探讨了JavaScript中的for...of循环,指出其仅适用于可迭代对象,如数组、Map和Set等。通过实例展示了for...of如何遍历数组,同时解释了普通对象为何无法被for...of遍历,原因是它们未实现@@iterator方法。了解这一概念对于优化JavaScript代码和避免遍历错误至关重要。

不会吧不会吧,我不会是最后一个知道for of不能遍历普通对象的叭

在这里插入图片描述
接下来咱们就好好扒一扒这个 for of循环:


for…of 语句在 可迭代对象(包括 Array,Map,Set,String,TypedArray,arguments 对象等等)上创建一个迭代循环,调用自定义迭代钩子,并为每个不同属性的值执行语句。(来自MDN解释)。

通俗解释就是,for of 循环只能遍历可迭代对象。

那什么是可迭代对象呢?

要成为可迭代对象, 一个对象必须实现 @@iterator 方法。这意味着对象(或者它原型链上的某个对象)必须有一个键为 @@iterator 的属性,可通过常量 Symbol.iterator 访问该属性。


我们最常见的就是用for of 去遍历数组:
let arr = ['tom', 'jerry']

for(item of arr) {
	console.log(item); // 分别打印 tom jerry
}

上面打印的 item 就是数组的每一项的值,并不是下标,如果想打印下标,可以用for in 语句

我们展开数组可以看到数组原型链上:
在这里插入图片描述

说明数组是可迭代对象。接下来我们看一下普通对象:
在这里插入图片描述
我们发现,普通对象确实没有实现 Iterator 方法,不是 可迭代对象,所以for of不能遍历普通对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值