JavaScript/自動分號插入
外觀
自動分號插入 (ASI)
在 C 族 語言中,分號表示語句的結束。與其他類似 C 的語言不同,JavaScript 沒有強制要求使用分號。相反,分號是可選的,直譯器會新增缺少的分號,通常在行尾,以終止語句。這樣做,它會考慮 複雜的規則。這可能會與預期的目的發生衝突。
如果您在語句末尾沒有寫分號,則必須注意出現問題的狀況。以下是一些避免問題的經驗法則。但還有很多其他規則。
return、throw或yield關鍵字後的表示式必須與關鍵字位於同一行。break或continue後的標籤識別符號必須與關鍵字位於同一行。- 如果一行以
(、[、`、+、-或/開頭,則在上一行末尾加上分號。
示例
| 輸入程式碼 .. | .. 解釋為 | 預期程式碼 |
|---|---|---|
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 的這種奇特性,建議始終不要在語句中換行,也不要將左大括號放在單獨的一行。