【发布时间】:2017-09-11 11:03:33
【问题描述】:
所以我在复习一些 JS,并遇到了以下简单的斐波那契计算器示例:
function* fibs() {
var a = 0;
var b = 1;
while (true) {
yield a;
[a, b] = [b, a + b];
}
}
var [first, second, third, fourth, fifth, sixth] = fibs();
// first = 0
// second = 1
// third = 1
// fourth = 2
// fifth = 3
// sixth = 5
无论您在结果数组中放入多少元素,该函数都会精确地循环正确的次数,然后退出。永远不会更多,永远不会更少,没有错误。
var [first, second] = fibs(); // Works great!
var [a, b, c, d, e, f, g, h, I, j, k, l] = fibs(); // Still works!
我一直在梳理文档,但找不到任何可能暗示正在发生的事情的内容。
生成器如何知道何时跳出循环并完成它?没有退出条件,也没有任何迹象表明这会永远运行。
非常感谢。
编辑#1
是否有另一种方法可以使用同一个生成器来获取序列中的第 n 个数字,而不会产生巨大的结果数组?
【问题讨论】:
标签: javascript generator yield