ホームページ >ウェブフロントエンド >jsチュートリアル >return ステートメントが改行されている場合、JavaScript 関数が「未定義」を返すのはなぜですか?

return ステートメントが改行されている場合、JavaScript 関数が「未定義」を返すのはなぜですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-10-24 08:55:30666ブラウズ

Why Do JavaScript Functions Return

Return ステートメントが改行されている場合、JavaScript 関数が「未定義」を返す

特定のシナリオでは、JavaScript 関数が予期したオブジェクトを返せない可能性があります。 return ステートメントの後に改行します。この問題は、コード例に示すように、オブジェクト定義が改行によって return ステートメントから分離されている場合に発生します。

function foo1(){
    return {msg: "hello1"};
}
function foo2(){
    return
    {msg: "hello2"};
}

// output = "foo1 =  {"msg":"hello1"}"
console.log('foo1 = ' , JSON.stringify(foo1())); 

//output = " foo2 =  undefined "
console.log('foo2 = ' , JSON.stringify(foo2()));

これらの関数の主な違いは、return ステートメントとfoo2 のオブジェクト定義。 JavaScript の自動セミコロン挿入 (ASI) メカニズムは、foo2 の return ステートメントの後に誤ってセミコロンを挿入し、オブジェクトを返さずに関数の実行を事実上終了させます。これにより、foo2() を文字列化する際に「未定義」が出力されます。

この問題を回避するには、次のようないくつかの方法を採用できます。

  • 明示的なセミコロン: ASI が意図しないセミコロンを挿入しないようにするには、return ステートメントの後にセミコロンを追加します。
  • 括弧 (グループ化演算子): return ステートメントとオブジェクト定義を括弧で囲み、JavaScript にオブジェクトを強制的に解釈させます。 return 式の一部として使用します。
  • 同じ行にオブジェクトを配置: ASI が干渉しないように、return ステートメントとオブジェクト定義の間で改行を避けます。

美的考慮事項やコードの読みやすさが ASI の問題の可能性よりも重要な場合、開発者は、応答に示されている例にあるように、グループ化演算子を使用して式をグループ化することを選択できます。ただし、このアプローチは主に好みの問題であり、コードの機能には影響しません。

以上がreturn ステートメントが改行されている場合、JavaScript 関数が「未定義」を返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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