在lodash library line中,为什么第一行有防御分号?
;(function(window) {
...
}(this));
我最近在Definitive JavaScript中读到防御分号用于防止不使用分号的用户,但由于没有前面的代码,我没有看到这一点。这是为了防止库连接到另一个库的末尾吗?
答案 0 :(得分:6)
如果您使用的是javascript压缩器/缩放器,并且之前的插件最后没有;
,则可能会遇到麻烦。因此,作为预防措施,我会添加;
。
此外,它还可以安全地添加多个javascript文件,以便在单个HTTP
请求中投放。
答案 1 :(得分:0)
该分号还用于确保它不被解释为前一语句的延续:
var x = 0 // Semicolon omitted here
;[x,x+1,x+2].forEach(console.log) // Defensive ; keeps this statement separate