1

lodash 库行中,为什么第一行有一个防御分号?

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

我最近在 Definitive JavaScript 中读到了关于防御性分号被用来保护不正确使用分号的用户,但由于没有前面的代码,我不明白这一点。这是为了防止图书馆被连接到另一个图书馆的末尾吗?

4

2 回答 2

6

;如果您使用 javascript 压缩器/压缩器,而之前的插件末尾没有 a ,您可能会遇到麻烦。因此,作为预防措施,;被添加。

此外,它还允许您安全地附加多个 javascript 文件,以便在单个HTTP请求中提供服务。

于 2013-07-09T14:04:41.553 回答
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

于 2014-09-24T04:20:58.630 回答