ホームページ >ウェブフロントエンド >jsチュートリアル >return ステートメントが改行されている場合、JavaScript 関数が「未定義」を返すのはなぜですか?
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 ステートメントが改行されている場合、JavaScript 関数が「未定義」を返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。