加与不加是风格问题,风格争议不需要有个定论。关键的问题在于如何“争论”,处理好冲突,学会组织语言减少争议是最重要的。因为分号问题在社区内部造成了很多况日持久的口水战,这些口水战是社区的损失……因为大家在这个时候可以写更多的代码带来更多的功能。 类似的问题还有AMD的module,有的库选择兼容AMD,有的人不愿意。公认结论是应该尊重作者的选择,不要因为这些风格问题而fork。module loader应该设法绕过这些问题,提供兼容的解决方案。
但是下面两种情况下必须要加分号
1.在以 “(“、”[“ 、”/“、”+”、”-“ 开头的语句前面都加上一个分号.
举个例子:在结构赋值中,把数组中的单元格赋值给一列变量前面必须得加分号,不然会影响上下语句,会报错。
[a,b,c]前面不加分号,就相当于写成let c = 0[a,b,c],这样浏览器就会解析报错
2.匿名函数前面要加分号
举个例子:两个匿名函数之间不加分号就会报错
所以以后遇到结构赋值和匿名函数的时候一定要注意分号的问题 正确的写法:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
let a = 0
let b = 0
let c = 0
; (function () { console.log(123) }());
(function () { console.log(456) }())
;[a, b, c] = [9, 8, 7]
console.log(`a:${a},b:${b},c${c}`)
</script>
</body>
</html>
执行结果: