Допустим, я создал генератор ES6Что означает синтаксис * (звездочка/звездочка) после среднего значения выхода в рекурсивной функции генератора?
function *createFibonacciIterator(a = 0, b = 1) {
yield b;
yield *createFib(b, b + a); // <== QUESTION IS ABOUT THIS LINE
}
Затем я использую этот генератор, чтобы получить первые 20 результатов
let fibber = createFibonacciIterator();
for (let ii = 0; ii < 20; ii++) {
console.log(fibber.next());
}
Если я оставляю *
из yield *createFib(b, b + a);
линии вещи ломаются, которые имеет смысл, потому что я не хочу получать итератор, но фактическое значение.
Каково техническое значение *
в генераторе?
'yield *' делегат другому генератору. – Pointy
может быть результатом * сплющить значения и сгладить их в функции генератора * лениво. – YOU