ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript で「return」ステートメントの後の改行が「unknown」を引き起こすのはなぜですか?

JavaScript で「return」ステートメントの後の改行が「unknown」を引き起こすのはなぜですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-05 12:07:01394ブラウズ

Why Does a Line Break After a `return` Statement Cause `undefined` in JavaScript?

JavaScript の return ステートメントを理解する: 改行が難しい理由

JavaScript では、return ステートメントは次の実行を終了するために使用されます。関数を呼び出して、呼び出し元のコンテキストに値を返します。ただし、戻り値が新しい行に配置されると、特有の動作が発生します。

問題: Return ステートメントの破損

次のコード スニペットを考えてみましょう:

<code class="javascript">function correct() {
  return 15;
}

function wrong() {
  return
        15;
}

console.log("correct() called : " + correct());
console.log("wrong() called : " + wrong());</code>

この例では、correct() 関数は期待値 15 を返しますが、wrong() 関数は未定義を返します。他のほとんどの言語では、改行が続く return ステートメントでも正しい値が返されるため、これは驚くべきことです。

理由: JavaScript の自動セミコロン挿入

この動作を理解する鍵は、JavaScript の自動セミコロン挿入 (ASI) 機能にあります。 ASI は、JavaScript が特定の改行文字にセミコロンを自動的に挿入して、有効なコードを実行できるようにするメカニズムです。

wrong() の return ステートメントの後に改行が続く場合、ASI はそれを別のステートメントとして扱います。その結果、コードは次のように解釈されます:

<code class="javascript">function wrong() {
  return;
        15;
}</code>

最初のステートメント (return;) が値を返さないため、wrong() 関数は unknown を返します。

解決策: 戻り値を括弧で囲む

新しい行であっても戻り値が正しく返されるようにするには、戻り値を括弧で囲む必要があります。これにより、ASI はセミコロンを挿入できなくなり、return ステートメントは有効なままになります。

<code class="javascript">function wrong() {
  return(
        15);
}</code>

この場合、括弧は戻り値が return ステートメントの一部であることを示します。 ASI はセミコロンを挿入せず、間違った() 関数は意図したとおり 15 を返すようになりました。

以上がJavaScript で「return」ステートメントの後の改行が「unknown」を引き起こすのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。