for...of循环专门遍历可迭代对象的元素值,如数组得元素、字符串得字符、Set得唯一值、Map得[key,value]数组;普通对象需转为Object.values()等才可用;不可迭代类型会报TypeError。

for...of 循环专门用于遍历可迭代对象(如数组、字符串、Map、Set、类数组对象等)的元素值,不直接访问索引或键名。
只取值,不取索引或键
与 for...in(遍历对象属性名)和传统 for(需手动管理索引)不同,for...of 的变量每次接收的是当前迭代项的值:
- 数组:得到每个元素本身(不是下标)
- 字符串:得到每个字符(包括空格、emoji 等)
- Set:得到每个唯一值
- Map:得到每个
[key, value]数组(因为 Map 的默认迭代器返回键值对)
基本写法
语法简洁,直接用 for (const item of iterable) { ... }:
const arr = [10, 20, 30];
for (const num of arr) {
console.log(num); // 依次输出 10、20、30
}
const str = "hi";
for (const char of str) {
console.log(char); // 输出 'h'、'i'
}
配合解构处理 Map 和对象
Map 默认迭代返回 [key, value] 数组,可用解构直接获取:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
立即学习“Java免费学习笔记(深入)”;
const map = new Map([['a', 1], ['b', 2]]);
for (const [key, value] of map) {
console.log(key, value); // 'a' 1,然后 'b' 2
}
普通对象不可直接用于 for...of(它不是可迭代的),需先用 Object.keys()、Object.values() 或 Object.entries() 转成可迭代结构:
const obj = { x: 1, y: 2 };
for (const value of Object.values(obj)) {
console.log(value); // 1,然后 2
}
注意不可迭代类型
以下会报错:TypeError: xxx is not iterable
- 普通 plain object(未显式部署迭代器)
-
null或undefined - 数字、布尔值等原始值(除字符串外)
遇到不确定是否可迭代的情况,可先用 Symbol.iterator in something 判断。

















