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

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

javascript迭代器是什么_for...of循环如何工作?-第1张图片-佛山资讯网

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

这和手写迭代逻辑等价:

标签: javascript java js 可迭代对象

发布评论 0条评论)

还木有评论哦,快来抢沙发吧~