function* expression

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2016.

function* keyword 는 표현식 내에서 generator function 을 정의합니다.

시도해보기

const foo = function* () {
  yield "a";
  yield "b";
  yield "c";
};

let str = "";
for (const val of foo()) {
  str = str + val;
}

console.log(str);
// Expected output: "abc"

Syntax

js
    function* [name]([param1[, param2[, ..., paramN]]]) {
       statements
    }

Parameters

name

함수명. 생략하면, 익명 함수가 됩니다. 함수명은 함수내에만 한정됩니다.

paramN

함수에 전달되는 인수의 이름. 함수는 최대 255 개의 인수를 가질 수 있습니다.

statements

함수의 본체를 구성하는 구문들.

Description

function* expression 은 function* statement 과 매우 유사하고 형식도 같습니다. function* expression 과 function* statement 의 주요한 차이점은 함수명으로, function* expressions 에서는 익명 함수로 만들기 위해 함수명이 생략될 수 있습니다.보다 자세한 내용은 functions 을 참조하십시오.

Examples

아래의 예제는 이름이 없는 generator function 을 정의하고 이를 x 에 할당합니다. function 은 인자로 들어온 값의 제곱을 생산(yield)합니다.

js
var x = function* (y) {
  yield y * y;
};

명세서

Specification
ECMAScript® 2025 Language Specification
# sec-generator-function-definitions

브라우저 호환성

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
function* expression
Trailing comma in parameters

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

See also