gpt4 book ai didi

javascript - 根据 ES6,JavaScript 数组迭代器本身是可迭代的吗?

转载 作者:行者123 更新时间:2023-11-30 11:38:45 24 4
gpt4 key购买 nike

以下适用于我检查过的 JavaScript 运行时(Node.js 和 Firefox):

let xs = [0, 1, 2]
let it = xs[Symbol.iterator]()
for (let x of it) console.log(x)

这是有效的,因为 it 迭代器本身是可迭代的,即它有一个 Symbol.iterator 属性。可以推测这是因为 Array.prototype[Symbol.iterator] 是作为生成器实现的。

我的问题是,我可以依赖 it 是可迭代的吗?也就是说,规范是否需要它?

我看过(this 是相关部分,我认为)但我找不到任何说明数组迭代器应该是可迭代的,或者它必须用生成器实现的内容。

最佳答案

你可以!核心对象的所有标准迭代器都扩展了 %IteratorPrototype%具体定义:

25.1.2.1 %IteratorPrototype% [ @@iterator ] ( )

The following steps are taken:

  1. Return the this value.

The value of the name property of this function is [Symbol.iterator].

因此每个内置迭代器在用作可迭代对象时都会自动返回自身,因此在 for...of 或任何其他迭代上下文中使用它是安全的。

关于javascript - 根据 ES6,JavaScript 数组迭代器本身是可迭代的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43421085/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com