为什么我们必须用[Symbol.iterator]定义Symbol.iterator?对于javascript中的iterables?

时间:2016-10-20 11:55:47

标签: javascript iterator iterable

为什么我们必须使用那些[]在js中定义@@ iterator协议。

// Works smoothly
var iterable = {
   [Symbol.iterator]() {}
}

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

1 个答案:

答案 0 :(得分:1)

因为对象文字中的键必须是有效的标识符("变量名称"),并且字面上被视为给定的名称。如果您想使用表达式作为键(Symbol.iterator的值,而不是文字名称" Symbol.iterator"),则需要使用computed property {{1}语法。