2019-02-03
回答
有时候是不需要的,有时候是需要的。这主要取决于 JavaScript 的自动插入分号的机制,解释器会在大多数语句后自动添加分号。也就是说在大多数情况下,我们是不需要分号的。
但是,在某些情况下我们是需要分号的。通常块元素开头是不需要分号的,但是下面代码片断就需要分号:
- 以
[
开头的行
const previousLine = 3
;[1, 2, previousLine].map(n => n * 2)
- 以
(
开头的行
const previousLine = 3
;(function() {
// ...
})()
在上面的例子中,解释器不会在 3
之后插入分号,因此会把 3
看为一个对象去尝试访问他的属性或者调用他的方法,这样就会产生对应的错误 Cannot read property 'map' of undefined
,Uncaught TypeError: 3 is not a function
。
加分回答
- 在 JavaScript 中,分号通常是可选的,但是在特定的情况下,他们是必不可少的。
- 如果你不使用分号,像 Prettier 这样格式化的工具将会在编辑器保存的时候对需要分号的地方自动插入分号以防止出错。