有时由于 JavaScript 的分号自动插入机制,解释器会在多数语句后放置分号。这就意味着在大多数情况下分号可以被忽略

然而,有些情况分号是必须的。在块的开始不需要加分号,但是如果它们遵循在一行并且:

  1. 行的开始是​​[​
const previousLine = 3
;[1, 2, previousLine].map(n => n * 2)
  1. 行的开始是​​(​
const previousLine = 3
;(function() {
// ...
})()

在上面的例子,解释器并不会在 ​​3​​​ 后面加入分号,并且因此它会把 ​​3​​ 当作是尝试对象访问属性或调用函数,这样会抛出错误

小贴士

  • 在 JavaScript 中,分号通常是可选的,但是在一些边缘情况它们是必须的
  • 如果你不用分号,像 Prettier 之类的工具会在文本编辑器保存时插入分号,以防出错