← 返回首页
return - JavaScript | MDN

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

View in English Always switch to English

return

Baseline 広く利用可能

この機能は広く実装されており、多くのバージョンの端末やブラウザーで動作します。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

仕様書

仕様書
ECMAScript® 2027 Language Specification
# sec-return-statement

ブラウザーの互換性

ブラウザー互換性一覧表を表示するには、JavaScript を有効にしてください。

関連情報