和別的編程語言一樣,JS用分號(;)將語句分隔開犁柜。但在JS中洲鸠,即使沒有分號,有時候也可以運行得通馋缅,因為JS在解析時會根據(jù)語法自動填補(bǔ)分號扒腕。
顯然這種自動填補(bǔ)往往會帶來錯誤的結(jié)果。例如
var y=x+f
(a+b).toString()
JS解析器會將它看作?
var y=x+f(a+b).toStrng()萤悴;
總結(jié)一下在卻少分號情況下JS解析的規(guī)律瘾腰,如下:
(1)從前往后,從左到右覆履,順序執(zhí)行居灯,直到讀取的內(nèi)容符合標(biāo)準(zhǔn)語法規(guī)則祭务,JS解析器會在此處自動填補(bǔ)一個分號。例如
x
++
y
將解析為:
x; ++y;
而不是“x++; y;”怪嫌。
(2)如果接下來的內(nèi)容不能解析成一條符合語法的語句义锥,那么將會向上配對,直至符合語法岩灭。例如
var a
a
=
3
console.log(a)
解析為
var a; a = 3 ; console.log(a);
再看一個例子
return
true
解析的結(jié)果是
return; ture;
為什么會是這樣呢拌倍?因為“return”和“true”獨自都可以構(gòu)成一條符合語法的語句。