This article is in need of a technical review.
This article is in need of an editorial review.
Сводка
Ключевое слово yield используется для остановки и возобновления функции-генератора.
Синтаксис
yield [[выражение]];
-
выражение -
Возвращаемое выражение. Если не указано, то возвращается значение
undefined.
Описание
Ключевое слово 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 }
Необходимы дополнительные примеры.
Спецификации
| Спецификация | Статус | Комментарий |
|---|---|---|
| ECMAScript 6 (ECMA-262) Определение 'Yield' в этой спецификации. |
Кандидат в рекомендации | Изначальное определение. |
Совместимость с браузерами
| Возможность | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
|---|---|---|---|---|---|
| Базовая поддержка | ? | ? | ? | ? | ? |
| Возможность | Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
|---|---|---|---|---|---|
| Базовая поддержка | ? | ? | ? | ? | ? |