gpt4 book ai didi

javascript - 函数定义中的星号是什么意思,比如 "function* ()"?

转载 作者:行者123 更新时间:2023-12-01 07:19:03 24 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





What is "function*" in JavaScript?

(4 个回答)


8年前关闭。



 function*() { .... }

我刚刚在其他一些 js 代码中找到了这种定义形式,星号到底是什么意思?谢谢

最佳答案

在 ES2015+ 中,它定义了一个 generator function .
下面是一个生成器的例子:

function* fibonacci() {
let [prev, curr] = [0, 1];
while (true) {
[prev, curr] = [curr, prev + curr];
yield curr;
}
}
多种使用方式:
for-of循环(另一个 ES2015+ 东西):
for (const n of fibonacci()) {
// truncate the sequence at 1000
if (n > 1000) {
break;
}
console.log(n);
}
例子:

function* fibonacci() {
let [prev, curr] = [0, 1];
while (true) {
[prev, curr] = [curr, prev + curr];
yield curr;
}
}

for (const n of fibonacci()) {
// truncate the sequence at 1000
if (n > 1000) {
break;
}
console.log(n);
}
.as-console-wrapper {
max-height: 100% !important;
}

直接使用迭代器( for-of 在幕后为你使用它):
const seq = fibonacci();
console.log(seq.next().value); // 1
console.log(seq.next().value); // 2
console.log(seq.next().value); // 3
console.log(seq.next().value); // 5
console.log(seq.next().value); // 8

function* fibonacci() {
let [prev, curr] = [0, 1];
while (true) {
[prev, curr] = [curr, prev + curr];
yield curr;
}
}

const seq = fibonacci();
console.log(seq.next().value); // 1
console.log(seq.next().value); // 2
console.log(seq.next().value); // 3
console.log(seq.next().value); // 5
console.log(seq.next().value); // 8
.as-console-wrapper {
max-height: 100% !important;
}

关于javascript - 函数定义中的星号是什么意思,比如 "function* ()"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23285149/

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