function*() { .... }
我刚刚在其他一些js代码中找到了这种形式的定义,这位明星的意思究竟是什么意思?感谢
答案 0 :(得分:13)
从ES6开始,它将定义generator function。 (该链接指向旧的"和/或维基页面,它可能不再是最新的,因为它已被折叠到latest specification drafts;目前它是第14.4节。 )
这是一个生成器的例子:
function* fibonacci() {
let [prev, curr] = [0, 1];
for (;;) {
[prev, curr] = [curr, prev + curr];
yield curr;
}
}
各种使用方式:
使用for-of
循环(另一个ES6,在第13.6.4节中):
for (n of fibonacci()) {
// truncate the sequence at 1000
if (n > 1000)
break;
print(n);
}
作为迭代器:
let seq = fibonacci();
print(seq.next()); // 1
print(seq.next()); // 2
print(seq.next()); // 3
print(seq.next()); // 5
print(seq.next()); // 8
答案 1 :(得分:0)
来自here
带*标记的函数称为生成函数。该 以下两个一元运算符只允许在直接正文中 生成器功能(即,在体内但不嵌套在内部) 另一个功能):
AssignmentExpression:
...
YieldExpression
YieldExpression:
"yield" ("*"? AssignmentExpression)?
如果a中出现yield或yield *表达式,则会引发早期错误 非发电机功能。