今日の参考コード https://codesandbox.io/s/vyxnv8rlv3

以下のコードを実行するとどうなると思いますか?多分思いつく選択肢は以下の二つですよね。

  • "this is returned value" console に表示された後に、"this is console" と表示される。
  • "this is returned value" と「だけ」 console に表示される。
"JavaScript"
const func1 = () => {
  return "this is returned value";

  console.log("this is console");
};

const res1 = func1();
console.log(res1);

return が実行されたら関数が終了し、それ以降の処理は全く実行されない

結論からいうと、後者の選択肢、つまり "this is returned value" だけが表示されます。

なぜか。

JavaScript の関数は return を実行すると、その時点で「全ての処理を終了」させるからです。ですから return より後ろにある console.log() は「絶対」に実行されません。絶対にです。

return したらその時点で終了!!!大事

return をしたらその時点で関数が終了するというのは地味な現象なので、あまり JavaScript に馴染みがない人は意識していないかもしれませんが、これはとても大事な機能です。

それからなるべく早く return が実行されるようにすることも、読みやすいコードを書くために役立ちます。

なぜなら、コードリーディングをする際に return が実行されるタイミングがわかった時点で、それ以降はもう読まなくていいからです。「読まなくてもいいところを明確にする」というのは可読性の高いコードを書く上で重要です。

return だけすると undefined が返ってくる

先ほどと似たコードですが、return だけを使って値を全く返さないようにすると、何が返ってくるでしょうか。

"JavaScript"
const func2 = () => {
  return;

  console.log("this is console");
};

// undefined が返ってくる
const res2 = func2();
console.log(res2);

undefiend が返ってきます。もちろんその時点で関数の処理は終了するので console.log("this is console") は実行されずじまいです。

明示的に undefined を返しても結果は同じ

次のように明示的に undefined を返しても、一個上のコード同じことになりますね。当然ですが。ただし、あまりこう書く人はいません。結果が同じだからです。

"JavaScript"
const func3 = () => {
  return undefined;

  console.log("this is console");
};

const res3 = func3();
console.log(res3);

宿題

  • 関数内で return を使う。
  • return より後ろに処理を書く。
  • return より後ろの処理が実行されないことを確認する。

今日は以上です!