Сводка

Ключевое слово 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 2015 (6th Edition, ECMA-262)
Определение 'Yield' в этой спецификации.
Стандарт Изначальное определение.

Совместимость с браузерами

Update compatibility data on GitHub
КомпьютерыМобильныеServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome для AndroidEdge MobileFirefox для AndroidOpera для AndroidSafari on iOSSamsung InternetNode.js
yieldChrome Полная поддержка 39Edge Полная поддержка ДаFirefox Полная поддержка 26
Замечания
Полная поддержка 26
Замечания
Замечания Starting with Firefox 33, the parsing of the yield expression has been updated to conform with the ES2015 specification.
IE Нет поддержки НетOpera Полная поддержка ДаSafari Полная поддержка 10WebView Android Полная поддержка 39Chrome Android Полная поддержка 39Edge Mobile Полная поддержка ДаFirefox Android Полная поддержка 26
Замечания
Полная поддержка 26
Замечания
Замечания Starting with Firefox 33, the parsing of the yield expression has been updated to conform with the ES2015 specification.
Opera Android Полная поддержка ДаSafari iOS Полная поддержка 10Samsung Internet Android Полная поддержка 4.0nodejs Полная поддержка 4.0.0
Полная поддержка 4.0.0
Полная поддержка 0.12
Отключено
Отключено From version 0.12: this feature is behind the --harmony runtime flag.
IteratorResult object instead of throwingChrome ? Edge ? Firefox Полная поддержка 29IE Нет поддержки НетOpera ? Safari Полная поддержка 10WebView Android ? Chrome Android ? Edge Mobile ? Firefox Android Полная поддержка 29Opera Android ? Safari iOS Полная поддержка 10Samsung Internet Android ? nodejs ?

Легенда

Полная поддержка  
Полная поддержка
Нет поддержки  
Нет поддержки
Совместимость неизвестна  
Совместимость неизвестна
Смотрите замечания реализации.
Смотрите замечания реализации.
Пользователь должен сам включить эту возможность.
Пользователь должен сам включить эту возможность.

Cмотрите также

Метки документа и участники

Внесли вклад в эту страницу: mdnwebdocs-bot, YozhEzhi, dtretyakov
Обновлялась последний раз: mdnwebdocs-bot,