在 JavaScript 中,普通的对象是不可迭代的,不能直接使用 for...of 循环进行遍历。而 for...of 循环用于迭代可迭代对象(iterable objects)。
可迭代对象是具有内置迭代器(iterator)的对象。可迭代对象包括数组(Array)、字符串(String)、Map、Set 等。
要确定一个对象是否可迭代,可以使用 Symbol.iterator 属性进行检查。如果对象具有 Symbol.iterator 属性并且该属性是一个函数,则表示该对象是可迭代的。
const obj = { a: 1, b: 2 };
console.log(typeof obj[Symbol.iterator]); // 输出: "undefined"
const arr = [1, 2, 3];
console.log(typeof arr[Symbol.iterator]); // 输出: "function"
for...of 每次迭代返回的是可迭代对象的一个值