return
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since 2015年7月.
return 文は関数の実行を終了し、関数の呼び出し元に返す値を指定します。
試してみましょう
function getRectArea(width, height) {
if (width > 0 && height > 0) {
return width * height;
}
return 0;
}
console.log(getRectArea(3, 4));
// 予想される結果: 12
console.log(getRectArea(-3, 4));
// 予想される結果: 0
構文
js
return;
return expression;
expression省略可-
値が返される式。省略した場合は、代わりに
undefinedが返されます。
解説
return 文は関数本体内でのみ使用できます。関数本体内で return 文が使用されると、関数の実行は停止します。return 文は配置される関数によって効果が異なります。
- 単純関数では、その関数への呼び出しは返値として評価されます。
- 非同期関数では、生成されたプロミスは返された値で解決されます。
- ジェネレーター関数では、生成されたジェネレーターオブジェクトの
next()メソッドは{ done: true, value: returnedValue }を返します。 - 非同期ジェネレーター関数では、生成された非同期ジェネレーターオブジェクトの
next()メソッドは、{ done: true, value: returnedValue }で履行されるプロミスを返します。
return 文が try ブロック内で実行された場合、finally ブロックがあれば、実際に値が返される前に実行されます。
自動セミコロン挿入
構文上、return キーワードと返値の式の間の改行は許容されません。
js
return
a + b;
上記のコードは自動セミコロン挿入 (ASI) によって、次のように変換されます。
js
return;
a + b;
これにより、この関数は undefined を返し、 a + b の式は評価されません。これはコンソールに警告を表示することがあります。
括弧を使用することで、この問題を回避する(ASI を防ぐ)ことができます。
js
return (
a + b
);
例
>関数を中断する
関数は return が呼び出された時点で即座に終了します。
js
function counter() {
// 無限ループ
for (let count = 1; ; count++) {
console.log(`${count}A`); // 5 まで
if (count === 5) {
return;
}
console.log(`${count}B`); // 4 まで
}
console.log(`${count}C`); // 決して現れない
}
counter();
// ログ:
// 1A
// 1B
// 2A
// 2B
// 3A
// 3B
// 4A
// 4B
// 5A
関数を返す
クロージャについての記事も参照のこと。
js
function magic() {
return function calc(x) {
return x * 42;
};
}
const answer = magic();
answer(1337); // 56154
仕様書
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-return-statement> |