可以加,也可以不加。
但如果不加需要注意,JavaScript并不是直接把换行符当作分号,而是会试着继续读取下一行,直到读取后无法解释。比如:
let a
a
=
3
console.log(a)
会被解释为
let a; a = 3; console.log(a);
而这样的语句终止规则就可能导致一些问题,比如:
let s = 'sss'
let a = 'aaa' + s
(1 + 2).toString()
会被解释为
let s = 'sss'; let a = 'aaa' + s(1 + 2).toString();
结果就是报错:Uncaught TypeError: s is not a function。
为了避免JavaScript解释错误,这里就需要明确地加一个分号。
这样的符号有5个:
( [ / + -
可以在以这5个符号开头的语句前防御性地添加一个分号。
虽然JavaScript通常会尝试读取下一行,但还是有3种特殊情况,在这几种情况下会直接把换行符解释为分号:
1、return break continue throw yield后面直接换行,如:
return
true
会被解释为
return; true;
2、++和–操作符作为后置操作符时先换行再写的操作符,如:
let a = 1
a
++
会报错:Uncaught SyntaxError: Unexpected end of input
3、箭头表达式的箭头被写在下一行
()
=>console.log(1)
会报错:Uncaught SyntaxError: Unexpected token ‘=>’
参考:javascript权威指南第七版