JavaScript隱性分號

理論上可以通過換行符分隔單條語句而不會導致錯誤,即JavaScript會自動在換行符前添加分號。

然而JavaScript不會在所有換行處都添加分號,只有當試圖合并下一行的語句會導致語法錯誤時才會自動添加分號。如

var
a
=
12
+
3

會被解析成
···
var a=12+3;

但是有兩個例外,1,當遇上return,break和continue時,如果沒有分號而換行,Javascript會自動添加分號而不會考慮下一行的語句,如:

return
a

會被解析成

return; a;

而不是

return a;

2,當++和--兩個運算符作為后綴運算符時,省略分號會導致JavaScript認為它們是前綴運算符,例如:

var a=10
a
++

它不會被解析成

var a=10;
a++;

而是會被解析成:

var a=10;
a;
++;

雖然這樣會造成語法錯誤。

注意,如果一條語句以“(”,“[”,“\”,“+”開始,在省略分號的編碼風格中,它們既有可能會被連接到前一行代碼的后面一起解析,這往往是我們不想要的,比如:

var a=b+f
(x+y)

會被解析成

var a=b+f (x+y);

變成了一個函數調用語句,雖然通常f并不是函數而會導致函數沒有聲明的錯誤,但這并不是語法錯誤,然而這也不是我們通常想要的結果,因此有一種編碼風格會在所有以“(”,“[”,“+”,“\”符號開頭的語句前再添加一個分號。

我習慣不省略分號的編碼習慣。
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容