javascript迭代器是什么_for…of循环如何工作?

JavaScript迭代器是拥有next()方法的对象,返回{value, done};for…of通过Symbol.iterator协议遍历,要求对象提供返回有效迭代器的方法,普通对象默认不支持。

javascript迭代器是什么_for...of循环如何工作?

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,再执行循环体

这和手写迭代逻辑等价:

立即学习“Java免费学习笔记(深入)”;

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循环如何工作?的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1542969.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月21日 14:39:17
下一篇 2025年12月21日 14:39:29

相关推荐

发表回复

登录后才能评论
关注微信