ホームページ > ウェブフロントエンド > jsチュートリアル > JavaScript 関数の改行がセミコロンを誤解し、エラーを返すのはなぜですか?

JavaScript 関数の改行がセミコロンを誤解し、エラーを返すのはなぜですか?

Mary-Kate Olsen
リリース: 2024-10-24 08:45:30
オリジナル
591 人が閲覧しました

Why Do JavaScript Function Line Breaks Misinterpret Semicolons and Return Errors?

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 サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート