理論上可以通過換行符分隔單條語句而不會導致錯誤,即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并不是函數而會導致函數沒有聲明的錯誤,但這并不是語法錯誤,然而這也不是我們通常想要的結果,因此有一種編碼風格會在所有以“(”,“[”,“+”,“\”符號開頭的語句前再添加一個分號。
我習慣不省略分號的編碼習慣。