行末のセミコロン

JavaScriptでこんなソースを書いた。

function hoge() {
  return 
      "タピオカ" +
      "パーン";
}


実行したら undefined が返ってきた。
調べてみたところ、JavaScriptの文法では、行末の「;」(セミコロン)を省略することができるらしい。
つまり

function hoge() {
  return;  // ← ここで関数の実行終わり
      "タピオカ" +
      "パーン";
}

という感じで解釈されたんだろう。undefined が返ってくるわけだ。


行末に「次の行に続くかもよ」と思わせるようなモノがあれば、次行も合わせて実行してくれるらしい。

function hoge() {
  return (  // ← 次行に続く
      "タピオカ" +
      "パーン" );
}

って書いたらちゃんと動いた。
「break」 も似たような動きをするので気をつけましょう。ってサイの本に書いてた。


私は「セミコロン必須の方がわかりやすくて良いなー。何か理由があるのかなー」と思った。