Movatterモバイル変換


[0]ホーム

URL:


  1. 開発者向けのウェブ技術
  2. JavaScript
  3. JavaScript リファレンス
  4. 式と演算子
  5. function* 式

このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docsコミュニティーについてもっと知り、仲間になるにはこちらから。

View in EnglishAlways switch to English

function* 式

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since ⁨2016年9月⁩.

function* キーワードは、式の中でジェネレーター関数を定義するために使用することができます。

また、ジェネレーター関数はfunction*宣言を使用して定義することもできます。

試してみましょう

const foo = function* () {  yield "a";  yield "b";  yield "c";};let str = "";for (const val of foo()) {  str += val;}console.log(str);// 予想される結果: "abc"

構文

js
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 (即時実行関数式)として使用できるため、その場で作成する反復可能イテレーターオブジェクトを実現することができます。詳細は関数に関する章も参照してください。

function* 式の使用

次の例では、無名ジェネレーター関数を定義し、x に代入します。この関数は引数の二乗を生成します。

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

仕様書

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

ブラウザーの互換性

関連情報

Help improve MDN

Learn how to contribute

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp