理論上可以通過換行符分隔單條語句而不會導(dǎo)致錯誤疚沐,即JavaScript會自動在換行符前添加分號。
然而JavaScript不會在所有換行處都添加分號,只有當(dāng)試圖合并下一行的語句會導(dǎo)致語法錯誤時(shí)才會自動添加分號。如
var
a
=
12
+
3
會被解析成
···
var a=12+3;
但是有兩個例外,1窍荧,當(dāng)遇上return,break和continue時(shí)恨憎,如果沒有分號而換行蕊退,Javascript會自動添加分號而不會考慮下一行的語句,如:
return
a
會被解析成
return; a;
而不是
return a;
2憔恳,當(dāng)++和--兩個運(yùn)算符作為后綴運(yùn)算符時(shí)瓤荔,省略分號會導(dǎo)致JavaScript認(rèn)為它們是前綴運(yùn)算符,例如:
var a=10
a
++
它不會被解析成
var a=10;
a++;
而是會被解析成:
var a=10;
a;
++;
雖然這樣會造成語法錯誤钥组。
注意输硝,如果一條語句以“(”,“[”程梦,“\”点把,“+”開始,在省略分號的編碼風(fēng)格中屿附,它們既有可能會被連接到前一行代碼的后面一起解析郎逃,這往往是我們不想要的,比如:
var a=b+f
(x+y)
會被解析成
var a=b+f (x+y);
變成了一個函數(shù)調(diào)用語句挺份,雖然通常f并不是函數(shù)而會導(dǎo)致函數(shù)沒有聲明的錯誤褒翰,但這并不是語法錯誤,然而這也不是我們通常想要的結(jié)果压恒,因此有一種編碼風(fēng)格會在所有以“(”影暴,“[”错邦,“+”探赫,“\”符號開頭的語句前再添加一個分號。
我習(xí)慣不省略分號的編碼習(xí)慣撬呢。