ASI机制
- js拥有自动分号插入的机制(Auto Semicolon Insertion)
- 该机制以换行为基础,尽量将新行并入当前行,当符合规则时将新行视为独立的语句
ASI规则
- 新行并入当前行,出现语法问题时,插入分号
if(1 < 10) a = 1
console.log(a)
// 等价于
if(1 < 10) a = 1;
console.log(a);
- return,break,continue,throw后,插入分号
return
{a: 1}
// 等价于
return;
{a: 1};
- 代码块最有一个语句,插入分号
function(){ a = 1 }
// 等价于
function(){ a = 1; }
不符合ASI规则
- 新行以特殊符号开头,如(、[、四则运算符和%、逗号句号等
- 通常不会以此类符号作为语句开头,因此一般情况下可以省略分号