for...of 是 javascript 中遍历可迭代对象(如数组、字符串、map、set)的语法,直接获取元素值,语义清晰;不可用于普通对象,需转为数组或自定义迭代器。

for...of 是 JavaScript 中专门用于遍历可迭代对象(如数组、字符串、Map、Set 等)的语法,它直接获取元素值,比传统的 for 循环或 for...in 更简洁、语义更清晰。
遍历普通数组
对数组使用 for...of 时,每次循环得到的是当前元素本身,不是索引。
- 无需手动管理索引,避免越界或漏项问题
- 不能直接获取索引,如需索引可配合
entries()或使用Array.prototype.keys()
const arr = ['a', 'b', 'c'];
for (const item of arr) {
console.log(item); // 输出: 'a', 'b', 'c'
}
同时获取索引和值
利用数组的 entries() 方法,它返回一个可迭代对象,每一项是 [index, value] 的数组。
- 用解构赋值轻松提取索引和值
- 适用于需要位置信息的场景,比如渲染列表带 key
const arr = ['apple', 'banana', 'cherry'];
for (const [index, value] of arr.entries()) {
console.log(index, value); // 0 'apple', 1 'banana', 2 'cherry'
}
遍历类数组或其它可迭代集合
for...of 不限于数组,还能遍历字符串、Set、Map、NodeList 等原生可迭代对象。
- 字符串:按字符遍历(支持 Unicode,比
for...in更可靠) - Set:自动去重,遍历时只拿到唯一值
- Map:默认遍历
[key, value]对,也可用keys()或values()
const str = 'hi'; for (const char of str) console.log(char); // 'h', 'i' const set = new Set([1, 2, 2]); for (const num of set) console.log(num); // 1, 2 const map = new Map([['x', 10], ['y', 20]]); for (const [k, v] of map) console.log(k, v); // 'x' 10, 'y' 20
注意不可遍历的对象
普通对象(plain object)默认不可迭代,直接用 for...of 会报错 TypeError: obj is not iterable。
- 想遍历对象属性,可用
Object.keys()、Object.values()或Object.entries()转成数组再用for...of - 或为对象手动添加
[Symbol.iterator]实现自定义迭代逻辑
const obj = { a: 1, b: 2 };
for (const key of Object.keys(obj)) {
console.log(key, obj[key]); // 'a' 1, 'b' 2
}Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











