在学习vue后完成了实训项目(培训中心网站),开始学习React,学习过程中发现在React的constructor钩子函数里,
每写一个语句都用分号结尾,这让我在习惯vue后产生了疑问,到底JS需不需要分号结尾。于是乎上百度。
在C语言中,分号是语句结束的标志,在语句结束的地方一定要以分号结束。而 JavaScript 的分号却是可选的,若语句都各占一行,则可以省略分号。
ASI 机制(Automatic semicolon insertion)
JavaScript 中的 ASI 机制,允许我们省略分号。ASI 机制不是说在解析过程中解析器自动把分号添加到代码中,而是说解析器除了分号还会以换行为基础按一定的规则作为断句的依据,从而保证解析的正确性。
ASI 规则
-
新行并入当前行构成非法语句时,自动插入分号
-
continue
,return
,break
,throw
后自动插入分号return => return;
a+b a+b; -
++
,--
后缀表达式作为新行开始,会在行首自动插入分号 -
代码块的最后一个语句会自动插入分号