This page was translated from English by the community.Learn more and join the MDN Web Docs community.
yield
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since сентябрь 2016 г..
Ключевое словоyield используется для остановки и возобновления функций-генераторов (function* илиlegacy generator function).
In this article
Интерактивный пример
function* foo(index) { while (index < 2) { yield index; index++; }}const iterator = foo(0);console.log(iterator.next().value);// Expected output: 0console.log(iterator.next().value);// Expected output: 1Синтаксис
[rv] = yield [[выражение]];
Описание
Ключевое словоyield вызывает остановку функции-генератора и возвращает текущее значение выражения, указанного после ключевого словаyield. Его можно рассматривать как аналог ключевого словаreturn в функции-генераторе.
На самом деле ключевое словоyield возвращает объект с двумя параметрами,value иdone. При этом,value является результатом вычисления выражения послеyield, аdone указывает, была ли завершена функция-генератор.
Во время остановки на оператореyield, выполнение кода в функции-генераторе не возобновится, пока не будет вызван методnext() возвращаемого функциейобъекта-генератора. Это предоставляет непосредственный контроль за выполнением генератора и возвратом его значений.
Примеры
Следующий фрагмент кода содержит определение функции-генератора и вспомогательной функции:
function* foo() { var index = 0; while (index <= 2) // при достижении 2, done в yield станет true, а value undefined; yield index++;}После того как тело функции-генератора определено, оно может использоваться для получения итератора:
var iterator = foo();console.log(iterator.next()); // { value:0, done:false }console.log(iterator.next()); // { value:1, done:false }console.log(iterator.next()); // { value:2, done:false }console.log(iterator.next()); // { value:undefined, done:true }Спецификации
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # prod-YieldExpression> |