codecamp

自动分号插入的例子

源代码:

{ 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()

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


自动分号插入规则
Undefined 类型
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }