gpt4 book ai didi

javascript - ES6 中的生成器

转载 作者:行者123 更新时间:2023-12-03 03:08:11 25 4
gpt4 key购买 nike

我创建了一个使用 es6 生成器生成斐波那契数列的函数:

//WARNING CAUSES INFINITE LOOP
function* fibonacci(limit = Infinity) {
let current = 0
let next = 1

while (current < limit) {
yield current
[current, next] = [next, current + next]
}
}

for (let n of fibonacci(200)) {
console.log(n)
}

上面的函数不会交换两个数字,而如果在任何其他函数中正常完成,则会交换两个数字。运行这个函数时我得到一个无限循环。为什么变量交换不起作用?

最佳答案

您遇到语法错误:缺少分号会使引擎将您的语句解析为

yield (current [ current, next ] = [ next, current + next ])
// ^ ^
// property access comma operator

如果你想省略分号和 let them be automatically inserted只要可能需要,您将 need to put one at the begin(, [, /, +, - 开头的每一行或`:

function* fibonacci(limit = Infinity) {
let current = 0
let next = 1

while (current < limit) {
yield current
;[current, next] = [next, current + next]
}
}

for (let n of fibonacci(200)) {
console.log(n)
}

关于javascript - ES6 中的生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47074434/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com