JavaScript自动分号(ASI)的规则是什么?

JavaScript的自动分号插入(ASI)是要插入丢失的分号。以下语句受自动分号插入影响-

empty statement
var statement
expression statement
do-while statement
continue statement
break statement
return statement
 throw statement

规则在以下规范中-

  • 当(从左到右)解析脚本或模块时:遇到任何语法产生都不允许的标记,则仅当满足以下一个或多个条件时,才在有问题的标记之前自动插入分号-

  • 令人反感的令牌是}。

  • 先前的标记是),然后将插入的分号解析为do-while语句的终止分号(13.7.2)。

  • 遇到输入令牌流的末尾,因此解析器无法将输入令牌流解析为一个完整的ECMAScript或一个模块,然后自动插入分号。

  • 遇到某些语法产生所允许的标记,但是产生是受限产生,并且标记将是紧随注解之后的终端或非终端的第一个标记。