为什么我们必须用 [Symbol.iterator] 定义 Symbol.iterator ?对于 javascript 中的可迭代对象?
Why do we have to define Symbol.iterator with [Symbol.iterator] ? for iterables in javascript?
为什么我们要用那些[]在js中定义一个@@iterator协议。
// Works smoothly
var iterable = {
[Symbol.iterator]() {}
}
// This fails with SyntaxError: unexpected token .
var iterable = {
Symbol.iterator() {}
}
因为对象字面量中的键必须是有效的标识符 ("variable names") 并且按字面意思作为给定的名称。如果要使用表达式作为键([=10=的值],而不是字面名称"Symbol.iterator"),则需要使用computed property { [...]: ... }
语法。
为什么我们要用那些[]在js中定义一个@@iterator协议。
// Works smoothly
var iterable = {
[Symbol.iterator]() {}
}
// This fails with SyntaxError: unexpected token .
var iterable = {
Symbol.iterator() {}
}
因为对象字面量中的键必须是有效的标识符 ("variable names") 并且按字面意思作为给定的名称。如果要使用表达式作为键([=10=的值],而不是字面名称"Symbol.iterator"),则需要使用computed property { [...]: ... }
语法。