ECMAScriptjs 自动插入分号

先来拘禁一个事例:

function get(){
    return 
    {
        a:1
    }

}
var r=get();
console.log(r);

似乎r的价值应是{a:1},然而运行结果也是undefined,这虽得从ecmascript的分店自动插入规则说自。

 

js的电动插入分号有三独规则:

1,从左为右侧解析程序,当遇到不切合词法文法产生式的token,只要满足下面条件之一即以违规token前自行插入分号:

a,至少发生一个实行终止符分隔了违规token和眼前一个token.

b,违规token是}

 

function a(){alert("function");}
a
()

这个会弹出警告框,因为()跟于a后面是官的,所以未见面插入分号。

 

2,从左到右解析程序,tokens
输入流已经终结,当解析器无法拿输入 token 流解析成单个完整 ECMAScript
程序 ,那么即便以输入流的结束位置自动插入分号。

 

3,从左到右解析程序时遇到受限token(即该token与前的token不能够插入换行符,否则运行结果未合乎预期)时,会当受限token前插入分号。

给限token有
后缀表达式,continue break return throw。

例子:

var a=1,b=1
a
++
b
console.log("a:",a);
console.log("b:",b);

结果是a=1,b=2,所以在a后面栽了分公司。