Post

js的自动分号插入

在书写js代码时,语句末尾的分号是可以不写的.我最初以为,js解释器会自动将回车识别为语句的结束.但事实并不是这样. js拥有”自动分号插入机制”,简称ASI.而且,回车符在解释器眼中只是空白. 有关ASI的原则,这里简单列举一下

插入分号的情况

  1. 新行并入当前行将构成非法语句,自动插入分号.
  2. 在continue,return,break,throw后自动插入分号
  3. ++、–后缀表达式作为新行的开始,在行首自动插入分号
  4. 代码块的最后一个语句会自动插入分号

不插入分号的情况

  1. 新行以 ( [ / 开始
  2. 新行以 * - + % 开始
  3. 新行以 , . 开始

所以,为了防止ASI导致代码出错,就需要在上述不插入分号的情况中,手动在行首加入分号. 下面是 element-plus 源码中的行首分号.

1
2
3
4
5
;(main as SFCWithInstall<T>).install = (app): void => {
    for (const comp of [main, ...Object.values(extra ?? {})]) {
      app.component(comp.name, comp)
    }
  }
This post is licensed under CC BY 4.0 by the author.