Ключевое слово function* может использоваться для объявления функции-генератора внутри выражения.
Синтаксис
function* [имя]([параметр1[, параметр2[, ..., параметрN]]]) {
инструкции
}
Параметры
имя- Имя функции. Может быть опущено, в этом случае функция будет анонимной. Имя локально для тела функции.
параметрN- Имя аргумента, передаваемого в функцию. Фунция может иметь до 255 аргументов.
инструкции- Инструкции, составляющие тело функции.
Описание
Выражение function* очень похоже на обявление function*, и имеет почти такой же синтаксис. Основная разница между выражением function* и объявлением function* – в имени функции, которое может быть опущено в выражениях function* для создания анонимных функций. Смотрите главу о функциях для получения более подробной информации.
Примеры
В следующем примере определяется безымянная функция-генератор и присваивается переменной x. Функция возвращает квадрат своего аргумента:
var x = function*(y) {
yield y * y;
};
Спецификации
| Спецификация | Статус | Комментарий |
|---|---|---|
| ECMAScript 2015 (6th Edition, ECMA-262) Определение 'function*' в этой спецификации. |
Стандарт | Изначальное определение. |
| ECMAScript Latest Draft (ECMA-262) Определение 'function*' в этой спецификации. |
Черновик |
Совместимость с браузерами
We're converting our compatibility data into a machine-readable JSON format.
This compatibility table still uses the old format,
because we haven't yet converted the data it contains.
Find out how you can help!
| Характеристика | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
|---|---|---|---|---|---|
| Базовая поддержка | (Да) | 26.0 (26.0) | ? | ? | ? |
yield* |
(Да) | 27.0 (27.0) | ? | ? | ? |
| Характеристика | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
|---|---|---|---|---|---|---|
| Базовая поддержка | ? | (Да) | 26.0 (26.0) | ? | ? | ? |
yield* |
? | (Да) | 27.0 (27.0) | ? | ? | ? |