在JavaScript开始时启动半冒号的目的是什么?

时间:2011-08-22 09:36:33

标签: javascript jquery

  

可能重复:
  What does the leading semicolon in JavaScript libraries do?

我注意到很多jQuery插件都以

开头
;(function(){ /* something in here */ })();

我只是想知道开始的分号是什么,以及最后的空括号。

2 个答案:

答案 0 :(得分:135)

如果你在一些“坏”脚本之后包含这个脚本,那么就会出现分号,而这个脚本没有用分号正确地关闭它的最后一行。在这种情况下,可能会将两个脚本组合在一起并导致代码无效。例如,如果要将多个脚本合并为一个响应。

最后的()正在执行该功能。这创造了一个封闭。私有变量和方法可以在此函数的范围内声明,无法从脚本外部访问。

答案 1 :(得分:9)

这个结构:

(function(){ /* something in here */ })()

用于在Javascript中创建新范围。

More info on function scope here.

关于分号,我以前从未见过它。我认为这是连接多个脚本时的安全性,因为在某些情况下,分号在文件末尾是可选的。