return
を使用して、関数が最終版として生成する値を指定します。
表示されます。インタープリタが return
ステートメントに到達すると、
そのステートメントが直ちに終了し、指定された値が
関数が呼び出されたコンテキスト:
const myFunction = function() {
return 2 + 2;
}
myFunction();
> 4
値を返す関数は、変数と同様に、その関数に含まれるデータとして効果的に扱うことができます。
const myFunction = function() {
return 2 + 2;
}
myFunction() + myFunction();
> 8
式のない return
ステートメントは、関数を終了して undefined
を返します。
const myFunction = function() {
return;
}
myFunction();
> undefined
return
キーワードは関数の終了を通知するため、検出された return
の後に続くコードは実行されません。
const myFunction = function() {
return true;
console.log( "This is a string." );
}
myFunction();
> true
また、検出された return
ステートメントに続くコードでは、
警告が表示される(エラーではない)開発コンソール:
const myFunction = function() {
return true;
console.log( "This is a string." );
}
> unreachable code after return statement
myFunction();
> true
繰り返しになりますが、これは return
return
ステートメントに連続して続くコードではなく、関数の実行のみに適用されます。
const myFunction = function( myParameter ) {
if( myParameter === undefined ) {
return "This is the result.";
}
return "This is the alternate result.";
}
myFunction();
> "This is the result."
myFunction( true );
> "This is the alternate result."
「ショート回路」早期の return
を使用する関数では、より簡潔に
単一の return
ステートメントよりも多くのコードを使用できます。たとえば、次の関数は、渡された値が 5 文字以上の文字列かどうかを判断します。渡された値が文字列リテラルでない場合は、文字数をカウントするコードは不要であり、関数はすぐに false
結果を返すことができます。
function myFunction( myString ) {
if( typeof myString !== "string" ) {
return false;
}
if( myString.length >= 5 ) {
return true;
} else {
return false;
}
}
myFunction( 100 );
> false
myFunction( "St" );
> false
myFunction( "String." );
> true
矢印関数式は、矢印関数本体に 1 つの式しか含まれず、ブロック構文が含まれていない場合に、return
キーワードが暗黙的に指定されるという点で独特です。
const myFunction = () => 2 + 2;
myFunction();
> 4
ブロック構文を使用して矢印関数の本体を定義する場合は、関数の本体に式が 1 つしか含まれていない場合でも、明示的な return
が必要です。
const myFunction = () => { 2 + 2 };
myFunction();
> undefined
const myFunction = () => { return 2 + 2 };
myFunction();
> 4
理解度をチェックする
return
の用途