自动分号插入的例子

2018-06-16 14:58 更新

源代码:

{ 1 2 } 3

 即使在自动分号插入规则下,它也不符合 ECMAScript 文法。做为对比,源代码:

{ 1 2 } 3

 它还是不符合 ECMAScript 文法,但是它会被自动分号插入成为一下形式:

{ 1  ;2 ;} 3;

 这符合 ECMAScript 文法。

 源代码:

for (a; b )

 不符合 ECMAScript 文法,并且不会被自动分号插入所更改,因为 for 语句头部需要分号。自动分号插入从来不会插入成 for 语句头部的两个分号之一。

 源代码:

return a + b

 会被自动分号插入转换成以下形式:

return; a + b;

 表达式 a + b 不会被当做是 return 语句要返回的值,因为有一个 LineTerminator 分割了它和 return token。

 源代码:

a = b ++c

 会被自动分号插入转换成以下形式:

a = b; ++c;

 ++token 不会被当做应用于变量 b 的后缀运算符,因为 b 和 ++ 之间出现了一个 LineTerminator。

 源代码:

if (a > b) else c = d

 它不符合 ECMAScript 文法 ,else token 前面不会被自动分号插入改变,即使没有文法产生式适用这一位置,因为自动插入分号后会解析成空语句。

 源代码:

a = b + c (d + e).print()

 它不会被自动分号插入改变,因为第二行开始位置的括号表达式可以解释成函数调用的参数列表:

a = b + c(d + e).print()

 在赋值语句必须用左括号开头的情况下,程序员在前面语句的结束位置明确的提供一个分号是个好主意,而不是依赖于自动分号插入。


以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号