自动分号插入的例子
源代码:
{ 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()
在赋值语句必须用左括号开头的情况下,程序员在前面语句的结束位置明确的提供一个分号是个好主意,而不是依赖于自动分号插入。
更多建议: