記錄以下資訊,源于一件事情,一位同僚,每次我改他的js代碼,發現語句結束都不使用分号作為結束。長長的一串,讀起來比較吃力。
即便語句的結束不使用分号結束,代碼仍然不會報錯,正常運作,是以不少程式員懶得去管這個。
使用分号有兩個好處:1、其他人讀你的代碼可讀性好。2、減少不必要的文法錯誤。在網際網路為了減少帶寬,壓縮js的檔案并成一行,不會出問題(看jquery
壓縮版就知道壓縮後的js是并在一行的)。其實我還發現,當使用代碼編輯器進行格式化源碼的時候,可以避免問題
看下面代碼:
..............前面代碼
}) //這裡作為語句結束,應該有個分号
return false //這裡也要有分号,不加其實不會報錯
}
.....後續代碼
看最後的"})"應該要以分号結束語句
-----------------------------------------------
js語句的結束符規律
如果不使用分号結束,在某些情況下是可行的。因為js解析器會去判斷此行(在這裡就是"})"所在的行),是否會有後續代碼,如果沒有。就預設語句結束(也就是把空的當成語句結束)。
js解析器會把新行當成新的代碼語句。如果有後續呢?這樣子就把後面代碼也當成同一句進行處理。是以最好是養成寫分号作為語句結束符的習慣。為了節省網絡帶寬,提高網站速度,當需要壓縮js腳本的時候。就會把所有的代碼并到一行,這樣的情況下,如果沒有分号,就無法明确知道語句的結束了,就會出現文法錯誤
....
}) //這裡本來是語句結束符,不加分号";"也不會報錯,原因是後面沒有任何内容了,是以js解析器會自動把這裡當成語句結束
var userid = "{$_userid}";
如果壓縮js代碼,就會變成如下:
...})var userid = "{$_userid}";
出現文法錯誤。
歸納:養成一個語句結束加";"的習慣是很好的,可以避免很多問題