学前端两年了,这个问题其实之前没有纠结过。因为之前写原生 JS 的时候,确实没有碰到过这个问题。后来使用 Vue 开发的时候,eslint 的配置里面通常都是加分号报警告的,所以一直以来都是省略分号。
最近在复习前端知识,突然之间的报错,让我有点措不及防。
let x0 = 0
(function autorun1() {
let x1 = 1
(function autorun2() {
let x2 = 2
(function autorun3() {
let x3 = 3
console.log(x0 + ' ' + x1 + ' ' + x2 + ' ' + x3)
})()
})()
})()
后来百度了一下,才知道各种缘由
let x0 = 0
(function autorun1() {
// ....
})()
这段其实是这样执行的
let x0 = 0(function autorun1() {
// ....
})()
为了程序不出现意料之外的结果,养好良好的 js 编码习惯,建议大家在每条语句结束时手动加上分号。
感兴趣的可以看看这篇:知乎