【问题标题】:Why do we have to define Symbol.iterator with [Symbol.iterator] ? for iterables in javascript?为什么我们必须用 [Symbol.iterator] 定义 Symbol.iterator?用于 javascript 中的可迭代对象?
【发布时间】:2017-03-02 09:54:06
【问题描述】:
js中为什么要使用那些[]来定义@@iterator协议。
// Works smoothly
var iterable = {
[Symbol.iterator]() {}
}
// This fails with SyntaxError: unexpected token .
var iterable = {
Symbol.iterator() {}
}
【问题讨论】:
标签:
javascript
iterator
iterable
【解决方案1】:
因为对象字面量中的键必须是有效的标识符(“变量名”),并且按字面意思作为给定的名称。如果要使用表达式作为键(Symbol.iterator 的值,而不是字面名称“Symbol.iterator”),则需要使用computed property { [...]: ... } 语法。