ASI 即automatic semicolon insertion。自动分号插入。
需要用;来结束的
- 空语句
- 以 let 、 const 、import 、 export 开头的声明语句
- 以 var 开头的变量声明语句
- 表达式语句
- debugger 语句
- continue 语句
- break 语句
- return 语句
- throw 语句
不需要用;结束的
- 块语句
- if语句
- try语句
ECMA标准限制生产式
return 语句中是不允许在 return 关键字之后出现行结束符的
- return
- ++ / - -
- continue
- break
- yield
- 箭头函数(左侧不允许有行结束符)
后自增运算符或后自减运算符应与它的操作数处于同一行。
return 或 throw 语句中的表达式以及 yield 表达式中的赋值表达式应与 return 、throw 、yield 这些关键字处于同一行。
break 或 continue 语句中的标签名应与 break 或 continue 关键字处于同一行。
总字,ES2015 标准这一节就告诉你一件事:在限制生产式中别换行,换行就自动插入分号。