为什么我们要定义符号.[Symbol]的迭代器.迭代器)?javascript中的可迭代对象

Why do we have to define Symbol.iterator with [Symbol.iterator] ? for iterables in javascript?

本文关键字:迭代器 javascript 对象 迭代 定义 我们 定义符 符号 Symbol 为什么      更新时间:2023-09-26

为什么要用那些[]来定义js中的@@迭代器协议呢?

// Works smoothly
var iterable = {
   [Symbol.iterator]() {}
}
// This fails with SyntaxError: unexpected token . 
var iterable = {
   Symbol.iterator() {}
}

因为对象字面值中的键必须是有效的标识符("变量名"),并且按字面意思作为给定的名称。如果您想使用表达式作为键(Symbol.iterator的值,而不是文字名称"Symbol.iterator"),则需要使用计算属性{ [...]: ... }语法。