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

为什么我们必须用[Symbol.iterator]定义Symbol.iterator?对于javascript中的iterables?,javascript,iterator,iterable,Javascript,Iterator,Iterable,为什么我们必须使用这些[]来定义js中的@迭代器协议 // Works smoothly var iterable = { [Symbol.iterator]() {} } // This fails with SyntaxError: unexpected token . var iterable = { Symbol.iterator() {} } 因为对象文本中的键必须是有效的标识符(“变量名”),并按字面意思作为给定的名称。如果要使用表达式作为键(值为Symbol.it

为什么我们必须使用这些[]来定义js中的@迭代器协议

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

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

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