JavaScript迭代器是什么?for...of原理详解
时间:2025-12-20 10:55:36 357浏览 收藏
偷偷努力,悄无声息地变强,然后惊艳所有人!哈哈,小伙伴们又来学习啦~今天我将给大家介绍《JavaScript迭代器是什么?for...of如何运行?》,这篇文章主要会讲到等等知识点,不知道大家对其都有多少了解,下面我们就一起来看一吧!当然,非常希望大家能多多评论,给出合理的建议,我们一起学习,一起进步!
JavaScript迭代器是拥有next()方法的对象,返回{value, done};for...of通过Symbol.iterator协议遍历,要求对象提供返回有效迭代器的方法,普通对象默认不支持。

JavaScript 迭代器是一个具有 next() 方法的对象,每次调用都返回形如 { value, done } 的结果。其中 value 是当前迭代值,done 是布尔值,为 true 表示遍历结束。它本身不决定“怎么遍历”,只提供“按需取值”的能力。
for...of 循环依赖 Symbol.iterator 接口
for...of 不是靠对象类型判断能否遍历,而是检查对象是否实现了可迭代协议——即是否存在 [Symbol.iterator] 方法,且该方法返回一个有效的迭代器对象。
- 数组、字符串、Set、Map、TypedArray、arguments 等原生类型默认有
[Symbol.iterator] - 普通对象(如
{a:1, b:2})默认没有,所以直接for...of会报错 - 你可以手动添加
[Symbol.iterator]让任意对象支持for...of
for...of 的实际执行过程
当你写 for (const x of iterable) { ... },JS 引擎内部做了三件事:
- 调用
iterable[Symbol.iterator]()获取迭代器 - 反复调用该迭代器的
next()方法,直到done: true - 每次把
next().value赋给循环变量x,再执行循环体
这和手写迭代逻辑等价:
const iterator = arr[Symbol.iterator]();
let result = iterator.next();
while (!result.done) {
console.log(result.value);
result = iterator.next();
}
常见误区与注意事项
for...in遍历的是对象的**可枚举属性键名**(包括原型链上的),而for...of遍历的是**可迭代对象的值**,二者目标完全不同- 数组用
for...in会拿到索引字符串(如"0"),用for...of拿到的是元素值(如42) - 想让普通对象被
for...of遍历,必须自己实现[Symbol.iterator],通常返回Object.entries(obj)的迭代器即可
基本上就这些。理解迭代器本质是“可控的逐个取值”,for...of 只是它的语法糖,不复杂但容易忽略底层契约。
今天关于《JavaScript迭代器是什么?for...of原理详解》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于的内容请关注golang学习网公众号!
相关阅读
更多>
-
502 收藏
-
501 收藏
-
501 收藏
-
501 收藏
-
501 收藏
最新阅读
更多>
-
304 收藏
-
160 收藏
-
344 收藏
-
351 收藏
-
119 收藏
-
195 收藏
-
371 收藏
-
304 收藏
-
490 收藏
-
137 收藏
-
425 收藏
-
444 收藏
课程推荐
更多>
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 立即学习 543次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 立即学习 516次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 立即学习 500次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 立即学习 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 立即学习 485次学习