为什么使用这个防御分号?

时间:2013-07-09 14:02:40

标签: javascript lodash

lodash library line中,为什么第一行有防御分号?

;(function(window) {
    ...
}(this));

我最近在Definitive JavaScript中读到防御分号用于防止不使用分号的用户,但由于没有前面的代码,我没有看到这一点。这是为了防止库连接到另一个库的末尾吗?

2 个答案:

答案 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

更多细节:https://stackoverflow.com/a/20854706/1048668