ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript の自動セミコロン挿入 (ASI) はどのように機能し、その落とし穴を回避するにはどうすればよいですか?

JavaScript の自動セミコロン挿入 (ASI) はどのように機能し、その落とし穴を回避するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-24 05:42:15749ブラウズ

How Does JavaScript's Automatic Semicolon Insertion (ASI) Work and How Can I Avoid Its Pitfalls?

JavaScript の自動セミコロン挿入 (ASI) ルール

JavaScript の ASI は、特定のステートメントの末尾にセミコロンが欠落している場合に自動的にセミコロンを挿入できる機能です。これは場合によっては便利ですが、バグにつながる可能性もあります。

ASI の影響を受けるステートメント

ASI は次のタイプのステートメントに適用されます:

  • 空のステートメント
  • Var ステートメント
  • 式ステートメント
  • Do-while ステートメント
  • Continue ステートメント
  • Break ステートメント
  • Return ステートメント
  • Throw ステートメント

ASI ルール

ASI の特定のルールは次のとおりです。

  1. 文法で許可されていない無効なトークンが見つかった場合、次の場合にはその前にセミコロンが挿入されます。

    • トークンが次のものから分離されている場合前のトークンを少なくとも 1 つの改行で区切ります。
    • トークンは閉じ中括弧です。 (}).
  2. トークンの入力ストリームの終わりに達し、パーサーが入力トークン ストリームを単一の完全なプログラムとして解析できない場合、末尾にセミコロンが自動的に挿入されます。
  3. トークンが文法で許可されているが、プロダクションが制限されたプロダクションである場合、制限されたプロダクションの前にセミコロンが自動的に挿入されます。 token.

制限されたプロダクションには以下が含まれます:

  • 更新式 ( 、 --)
  • Continue ステートメント
  • Break ステートメント
  • Return ステートメント
  • Throwステートメント
  • アロー関数
  • 生成式

例 1:

{ 1
2 } 3

ASI はこのコードを変換しますto:

{ 1
;2 ;} 3;

例 2:

a = b
++c

ASI はこのコードを次のように変換します:

a = b;
++c;

例 3 :

return
"something";

ASI が変換されますこのコードの目的:

return;
"something";

ASI バグの回避

ASI は便利な機能ですが、バグを引き起こす可能性もあります。 ASI のバグを回避するには、各ステートメントの最後に常にセミコロンを明示的に使用することをお勧めします。

以上がJavaScript の自動セミコロン挿入 (ASI) はどのように機能し、その落とし穴を回避するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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