1. 以 (
, [
, `
, /
, +
, -
开头的行
-
这些字符可能被解释为上一行的延续,导致意外结果。
-
经典案例:
正确写法:
2. 立即执行函数(IIFE)
-
如果上一行没分号,IIFE 可能被当作函数调用:
正确写法:
3. 模板字符串或正则表达式
-
模板字符串或正则可能被误认为是上一行的延续:
正确写法:
4. return
, throw
, yield
, break
, continue
后换行
-
这些关键字后的内容如果换行,ASI 会提前插入分号:
正确写法:
5. import
, export
, let
, const
, var
后直接换行
-
某些情况下换行会导致解析错误(较少见,但需注意):
6. 代码压缩工具(如 Webpack、Rollup)的潜在问题
-
压缩后的代码可能因缺少分号导致合并错误(现代工具通常能处理,但历史项目需注意)。
总结:何时必须写分号?
-
当下一行以
(
,[
,`
,/
,+
,-
开头时。 -
在 IIFE、模板字符串、正则等特殊语法前。
-
在
return
/throw
等关键字后需要直接返回值时。 -
使用老旧工具链或代码压缩时。