Что выведет код Middle Итераторы и генераторы обновлено
Передача значений в генератор через next
Вопрос
Что выведет код? По строке на каждый вывод.
function* dialog() {
const name = yield 'Как зовут?';
const age = yield 'Привет, ' + name + '! Сколько лет?';
return name + ', ' + age;
}
const g = dialog();
console.log(g.next('игнор').value);
console.log(g.next('Аня').value);
const last = g.next(30);
console.log(last.value, last.done);
Попробуйте сами
Напишите, что выведет код: каждый вывод с новой строки.
Показать ответ и разбор
Коротко
Код выведет: Как зовут?, Привет, Аня! Сколько лет?, Аня, 30 true. Первый next запускает генератор до первого yield; его аргумент 'игнор' некуда передать, он теряется.
Что выведет
Как зовут?
Привет, Аня! Сколько лет?
Аня, 30 true
Разбор
Первый next запускает генератор до первого yield; его аргумент 'игнор' некуда передать, он теряется. Второй next('Аня') делает 'Аня' результатом первого yield, то есть name, и генератор доходит до второго yield. Третий next(30) кладёт 30 в age, генератор выполняет return, и результат приходит с done: true.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.