可能重复:
What does the leading semicolon in JavaScript libraries do?
我注意到很多jQuery插件都以
开头;(function(){ /* something in here */ })();
我只是想知道开始的分号是什么,以及最后的空括号。
答案 0 :(得分:135)
如果你在一些“坏”脚本之后包含这个脚本,那么就会出现分号,而这个脚本没有用分号正确地关闭它的最后一行。在这种情况下,可能会将两个脚本组合在一起并导致代码无效。例如,如果要将多个脚本合并为一个响应。
最后的()正在执行该功能。这创造了一个封闭。私有变量和方法可以在此函数的范围内声明,无法从脚本外部访问。
答案 1 :(得分:9)
这个结构:
(function(){ /* something in here */ })()
用于在Javascript中创建新范围。
More info on function scope here.
关于分号,我以前从未见过它。我认为这是连接多个脚本时的安全性,因为在某些情况下,分号在文件末尾是可选的。