和别的编程语言一样,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”独自都可以构成一条符合语法的语句。