javascript内置可迭代对象是默认实现[symbol.iterator]方法、可直接用于for...of等场景的对象,包括array、string、map、set、typedarray、arguments、nodelist和generator函数返回值;普通object、date、math等则不是。

JavaScript 中的内置可迭代对象,是指那些**默认就实现了 [Symbol.iterator] 方法**、能直接用于 for...of、展开运算符([...iterable])、Array.from()、解构等场景的对象。
最常用的内置可迭代对象
这些是日常开发中高频使用、无需额外处理就能遍历的类型:
-
Array(数组):如
[1, 2, 3],按索引顺序逐项迭代 -
String(字符串):如
"hello",按 Unicode 字符(非字节)逐个迭代 -
Map:迭代时返回
[key, value]数组,保持插入顺序 - Set:按元素添加顺序迭代唯一值
-
TypedArray(如
Uint8Array、Int32Array):类数组数值集合,原生可迭代
容易被忽略但同样内置可迭代的对象
它们不是“数据容器”型结构,但在规范中明确实现了可迭代协议:
Java Maven 项目审查工作流的通用输入处理。当 Java Maven 项目以 ZIP压缩包或 GitLab 仓库 URL 形式提供且需要...时使用。
-
arguments:函数内可用的类数组对象,支持
for...of(注意:箭头函数无arguments) -
NodeList:如
document.querySelectorAll('div')返回的结果,可直接遍历 - Generator 函数的返回值:生成器对象既是可迭代对象,本身也是迭代器
常见误解:哪些不是内置可迭代对象?
以下对象**默认不满足可迭代协议**,直接用于 for...of 会报错 TypeError: xxx is not iterable:
-
普通 Object({}):键无序,未实现
[Symbol.iterator];需手动添加或转为Object.keys()/entries()等 - Date:表示时间戳,不可遍历
- Math、JSON、RegExp:工具型静态对象,不含可遍历数据结构
- Promise、Function、null、undefined:均不实现该协议
快速验证方法
判断一个值是否为可迭代对象,最可靠的方式是检查它是否有可用的 [Symbol.iterator] 方法:
例如:
isIterable([1,2]) → true
isIterable({}) → false
isIterable(new Map()) → true
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










