首頁 > web前端 > js教程 > JavaScript 的自動分號插入 (ASI) 如何運作以及如何避免它的陷阱?

JavaScript 的自動分號插入 (ASI) 如何運作以及如何避免它的陷阱?

Mary-Kate Olsen
發布: 2024-12-24 05:42:15
原創
751 人瀏覽過

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的具體規則如下:

如果遇到語法不允許的無效標記,則在其前面插入分號,如果:

  1. 標記是與前一個標記至少分隔一個換行符。

    該標記是一個右大括號(}).
    • 當遇到token 輸入流的末尾並且解析器無法將輸入token 流解析為單一完整程序時,會在最後自動插入分號輸入流的。
    如果語法允許標記,但產生式是受限產生式,則會在受限產生式之前自動插入分號
  2. 限制產生式包括:
更新表達式( , --)

Continue 語句
  • Break語句
  • 返回語句
  • 拋出語句
  • 箭頭函數
  • 收益表達式
  • 示例
範例1:

ASI將轉換此程式碼至:

{ 1
2 } 3
登入後複製

範例 2:

{ 1
;2 ;} 3;
登入後複製

ASI將此程式碼轉換為:

a = b
++c
登入後複製

範例3:

a = b;
++c;
登入後複製

ASI 會將此程式碼轉換為:

return
"something";
登入後複製
ASI 會將此程式碼轉換為:

return;
"something";
登入後複製
ASI 會將此程式碼轉換為:

ASI 會將此程式碼轉換為:

ASI 會將此程式碼轉換為:避免ASI 錯誤ASI可以是一個有用的功能,但它也可以導致錯誤。為了避免 ASI 錯誤,最好始終在每個語句末尾明確使用分號。

以上是JavaScript 的自動分號插入 (ASI) 如何運作以及如何避免它的陷阱?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板