僅在}之前、一個或多個換行之后和程序輸入的結尾被插入
也就是說你只能在一行、一個代碼塊和一段程序結束的地方省略分號。
也就是說你可以寫如下代碼
僅在隨后的輸入標記不能解析時插入
也就是說分號插入是一種錯誤校正機制。看代碼說話
a = b
f()
//被解析為兩條獨立的語句
a = bf();//解析有誤
所以你必須得注意下一條語句的開始,從而確定你是否能夠合法的省略分號。
(、[、+、-、和/ 這五個字符開始的語句,那么最好前面不要省略分號。
舉例說明一下哦
所以(、[、+、-、和/ 這五個字符開始的語句,那么最好前面不要省略分號。
想省略分號,有經驗的程序員會在該語句的后面跟一個聲明語句,以保證解析器解析正確。如下所示
省略分號導致腳本連接問題
//file2.js
(function () {
//......
})()
上述兩個文件連接時,就會被解析成如下
所以省略分號不僅需要當心當前文件的下一個標記,而且還需要當心腳本連接后可能出現在語句之后的任一標記。
為避免解析器解析錯誤,你可以在每個文件前綴一個額外的分號以保護腳本免受粗心連接的影響。如果文件最開始的語句以上述5個脆弱字符開關,你就應該添加額外的分號前綴。
JavaScript語法限制產生式
JavaScript語法限制產生式:不允許在兩個字符之間出現換行。
舉例說明:
自增自減運算的分號插入規則
分號不會作為分隔符在for循環空語句的頭部被自動插入
空循環體的while同樣也需要顯示的分號,否則也會導致解析錯誤
總結一下哦
1.僅在}標記之前、一行的結束和程序的結束處推導分號
2.僅在緊接著的標記不能被解析的時候推導分號
3.在以(、[、+、-、和/ 字符開頭的語句前絕不能省略分號
4.當腳本連接的時候,在腳本之間顯式的插入分號
5.在return、throw、break、continue、++或--的參數之前絕不能換行
6.分號不能作為for循環的頭部或空語句的分隔符而被推導出
新聞熱點
疑難解答