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

不会吧不会吧,我不会是最后一个知道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不能遍历普通对象

猜你喜欢

转载自blog.csdn.net/qq_42667613/article/details/121764120