跳轉到內容

JavaScript/自動分號插入

來自華夏公益教科書,開放的書籍,開放的世界




自動分號插入 (ASI)

C 族 語言中,分號表示語句的結束。與其他類似 C 的語言不同,JavaScript 沒有強制要求使用分號。相反,分號是可選的,直譯器會新增缺少的分號,通常在行尾,以終止語句。這樣做,它會考慮 複雜的規則。這可能會與預期的目的發生衝突。

如果您在語句末尾沒有寫分號,則必須注意出現問題的狀況。以下是一些避免問題的經驗法則。但還有很多其他規則。

  1. returnthrowyield 關鍵字後的表示式必須與關鍵字位於同一行。
  2. breakcontinue 後的標籤識別符號必須與關鍵字位於同一行。
  3. 如果一行以 ([`+-/ 開頭,則在上一行末尾加上分號。
    示例
輸入程式碼 .. .. 解釋為 預期程式碼
return
2a + 1
return;
2a + 1;
return 2*a + 1;
function getObject() {
  return
  {
    // some lines
  }
}
function getObject() {
  return;
  {
    // some lines
  };
}
function getObject() {
  return {
    // some lines
  };
}
i
++
i;
++;
i++;


在第一種情況下,程式設計師想要返回 2*a + 1;相反,程式碼返回了 undefined。類似地,在第二種情況下,程式設計師想要返回由大括號 {} 包含的行,但程式碼返回了 undefined。由於 JavaScript 的這種奇特性,建議始終不要在語句中換行,也不要將左大括號放在單獨的一行。

另請參閱

[編輯 | 編輯原始碼]
華夏公益教科書