function*() { .... }
他のjsコードでその形式の定義を見つけたばかりですが、星は実際にはどういう意味ですか? ありがとう
function*() { .... }
他のjsコードでその形式の定義を見つけたばかりですが、星は実際にはどういう意味ですか? ありがとう
ES2015+ では、ジェネレーター関数を定義します。
ジェネレーターの例を次に示します。
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;
}
ここから
* トークンを持つ関数は、ジェネレーター関数と呼ばれます。次の 2 つの単項演算子は、ジェネレーター関数の直接の本体 (つまり、本体ではあるが別の関数内にネストされていない) でのみ許可されます。
AssignmentExpression:
...
YieldExpression
YieldExpression:
"yield" ("*"? AssignmentExpression)?
生成関数以外で yield または yield* 式が発生すると、初期エラーが発生します。