ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript の自動セミコロン挿入は常にエラーを防止しますか?

JavaScript の自動セミコロン挿入は常にエラーを防止しますか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-23 16:05:15847ブラウズ

Does JavaScript's Automatic Semicolon Insertion Always Prevent Errors?

JavaScript の自動セミコロン挿入のニュアンス

ASI の適用性の明確化

自動セミコロン挿入 (ASI) は JavaScript の機能ですコードにセミコロンが欠落している場合に自動的にセミコロンを挿入します。構文エラーが発生しないようにします。ただし、これは特定のステートメント タイプにのみ適用されます:

  • 空のステートメント
  • 変数宣言
  • 式ステートメント
  • Do-while ステートメント
  • ステートメントを続行
  • 中断ステートメント
  • Return ステートメント
  • Throw ステートメント

ECMAScript 仕様による ASI ルール

ECMAScript 仕様では 3 つのシナリオが定義されていますASI の場合:

1.無効なトークンが検出されました

文法で許可されていない問題のあるトークンは、次の場合にセミコロンの挿入をトリガーします。

  • 改行によって前のトークンと区切られている。
  • 続いて}.

2.入力ストリームの終了

パーサーが完全なプログラムを解析できないまま入力ストリームが終了した場合、最後にセミコロンが挿入されます。

3.制限されたプロダクション

トークンが許可されているが「制限されたプロダクション」に属している場合 (例: 改行なしで戻るまたは続行)、トークンの前にセミコロンが挿入されます。

例:

return
"something";

は変換されますto:

return;
"something";

ルールの例外

ただし、ルールには例外があります。 ASI によって SyntaxError が発生する場合、ASI は挿入されません。たとえば、次のコードでは:

if (x)
return
  y;

ASI は次のように変換します:

if (x)
return;
y;

y はそれ自体では有効なステートメントではないため、SyntaxError が発生します。

以上がJavaScript の自動セミコロン挿入は常にエラーを防止しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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