function* выражение
Базовая Широко доступно
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна во всех браузерах с сентября 2016 года.
Ключевое слово function* может использоваться для определения функции-генератора внутри выражения.
Вы также можете определять функции-генераторы с помощью function*.
Попробуйте
const foo = function* () {
yield "a";
yield "b";
yield "c";
};
let str = "";
for (const val of foo()) {
str += val;
}
console.log(str);
// Expected output: "abc"
Синтаксис
function* (param0) {
statements
}
function* (param0, param1) {
statements
}
function* (param0, param1, /* …, */ paramN) {
statements
}
function* name(param0) {
statements
}
function* name(param0, param1) {
statements
}
function* name(param0, param1, /* …, */ paramN) {
statements
}
Примечание: Выражение-инструкция не может начинаться с ключевого слова function, чтобы избежать неоднозначности с function*. Ключевое слово function начинает выражение только тогда, когда оно появляется в контексте, который не может принимать инструкции.
Параметры
-
nameНеобязательный - Имя функции. Может быть опущено, в этом случае функция является анонимной. Имя видимо только внутри тела функции.
-
paramNНеобязательный - Имя формального параметра для функции. Синтаксис параметров см. в Справочнике по функциям.
-
statementsНеобязательный - Инструкции, составляющие тело функции.
Описание
function* является очень похожим на function* и имеет почти такой же синтаксис. Основное отличие между function* и function* заключается в имени функции, которое может быть опущено в function* выражениях для создания анонимных функций. function* может использоваться как IIFE (Immediately Invoked Function Expression — немедленно вызываемое функциональное выражение), которое выполняется сразу после определения, позволяя создавать итерируемые объекты-итераторы по мере необходимости. Также см. главу о функциях для получения дополнительной информации.
Примеры
Использование function* выражения
Следующий пример определяет безымянную функцию-генератор и присваивает ее x. Функция выдает квадрат своего аргумента:
const x = function* (y) {
yield y * y;
};
Спецификации
Совместимость с браузерами
| Настольные компьютеры | Мобильные устройства | Сервер | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on iOS | Samsung Internet | WebView Android | WebView on iOS | Bun | Deno | Node.js | |
generator_function |
49 |
12 |
26 |
36 |
10 |
49 |
26 |
36 |
10 |
5.0 |
49 |
10 |
1.0.0 |
1.0 |
4.0.0 |
trailing_comma |
58 |
79 |
52 |
45 |
10 |
58 |
52 |
43 |
10 |
7.0 |
58 |
10 |
1.0.0 |
1.0 |
8.0.0 |
См. также
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/function*