Spec-Zone.ru › JavaScript

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;
};

Спецификации

Спецификация
ECMAScript® 2027 Language Specification
# sec-generator-function-definitions

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

Настольные компьютеры Мобильные устройства Сервер
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

См. также

  • Руководство по функциям
  • Функции
  • function*
  • GeneratorFunction
  • Протоколы итерации
  • yield
  • yield*

© 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*

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API