和別的編程語言一樣,JS用分號(;)將語句分隔開。但在JS中,即使沒有分號,有時候也可以運行得通,因為JS在解析時會根據語法自動填補分號。
顯然這種自動填補往往會帶來錯誤的結果。例如
var y=x+f
(a+b).toString()
JS解析器會將它看作?
var y=x+f(a+b).toStrng();
總結一下在卻少分號情況下JS解析的規律,如下:
(1)從前往后,從左到右,順序執行,直到讀取的內容符合標準語法規則,JS解析器會在此處自動填補一個分號。例如
x
++
y
將解析為:
x; ++y;
而不是“x++; y;”。
(2)如果接下來的內容不能解析成一條符合語法的語句,那么將會向上配對,直至符合語法。例如
var a
a
=
3
console.log(a)
解析為
var a; a = 3 ; console.log(a);
再看一個例子
return
true
解析的結果是
return; ture;
為什么會是這樣呢?因為“return”和“true”獨自都可以構成一條符合語法的語句。