JavaScript 関数の戻りエラー: 改行がセミコロンを誤解する
JavaScript では、関数は通常、データまたは機能を表すオブジェクトを返すために使用されます。ただし、この質問で例示されているように、return ステートメントとオブジェクトの間に改行がある場合、微妙な問題が発生します。
問題:
提供されたコード内
<code class="javascript">function foo1(){ return {msg: "hello1"}; } function foo2(){ return {msg: "hello2"}; }</code>
期待どおりに foo1() を呼び出すと、オブジェクト "{"msg":"hello1"}" が返されます。ただし、foo2() を呼び出すと、奇妙なことに「unknown」が返されます。
理由:
これらの関数の違いは、foo2() のオブジェクトの前に置かれた改行のみにあります。 )。 JavaScript は自動セミコロン挿入 (ASI) を使用して、さまざまな状況で省略されたセミコロンを推測します。
foo1() では、ASI により、暗黙的なセミコロンが return ステートメントの後に配置され、オブジェクトから分離されます。これにより、関数はオブジェクトを正しく返すことができます。
ただし、foo2() では、改行により、オブジェクトに到達する前にステートメントが完了していると ASI に認識させます。その結果、オブジェクトは別のステートメントとして解釈され、返されません。
解決策:
この問題を解決するには、return ステートメントとオブジェクトの間に改行を入れます。避けるべきです。さらに、明確にするために、一部の開発者はグループ化演算子を使用してオブジェクトを明示的にラップしています。
<code class="javascript">function foo2(){ return ({msg: "hello2"}); }</code>
オブジェクトを括弧で囲むことにより、グループ化演算子は、改行があっても単一のステートメントとして解釈されるようにします。プレゼント。
以上がJavaScript 関数の改行がセミコロンを誤解し、エラーを返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。