JavaScript隱性分號

理論上可以通過換行符分隔單條語句而不會(huì)導(dǎo)致錯(cuò)誤,即JavaScript會(huì)自動(dòng)在換行符前添加分號。

然而JavaScript不會(huì)在所有換行處都添加分號,只有當(dāng)試圖合并下一行的語句會(huì)導(dǎo)致語法錯(cuò)誤時(shí)才會(huì)自動(dòng)添加分號。如

var
a
=
12
+
3

會(huì)被解析成
···
var a=12+3;

但是有兩個(gè)例外,1,當(dāng)遇上return,break和continue時(shí),如果沒有分號而換行,Javascript會(huì)自動(dòng)添加分號而不會(huì)考慮下一行的語句,如:

return
a

會(huì)被解析成

return; a;

而不是

return a;

2,當(dāng)++和--兩個(gè)運(yùn)算符作為后綴運(yùn)算符時(shí),省略分號會(huì)導(dǎo)致JavaScript認(rèn)為它們是前綴運(yùn)算符,例如:

var a=10
a
++

它不會(huì)被解析成

var a=10;
a++;

而是會(huì)被解析成:

var a=10;
a;
++;

雖然這樣會(huì)造成語法錯(cuò)誤。

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

var a=b+f
(x+y)

會(huì)被解析成

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

變成了一個(gè)函數(shù)調(diào)用語句,雖然通常f并不是函數(shù)而會(huì)導(dǎo)致函數(shù)沒有聲明的錯(cuò)誤,但這并不是語法錯(cuò)誤,然而這也不是我們通常想要的結(jié)果,因此有一種編碼風(fēng)格會(huì)在所有以“(”,“[”,“+”,“\”符號開頭的語句前再添加一個(gè)分號。

我習(xí)慣不省略分號的編碼習(xí)慣。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容