【发布时间】:2011-08-22 09:36:33
【问题描述】:
可能重复:
What does the leading semicolon in JavaScript libraries do?
我注意到很多 jQuery 插件都是以
开头的;(function(){ /* something in here */ })();
我只是想知道开头的分号是做什么用的,以及末尾的空括号。
【问题讨论】:
标签: javascript jquery
可能重复:
What does the leading semicolon in JavaScript libraries do?
我注意到很多 jQuery 插件都是以
开头的;(function(){ /* something in here */ })();
我只是想知道开头的分号是做什么用的,以及末尾的空括号。
【问题讨论】:
标签: javascript jquery
如果您将这个脚本包含在某个“坏”脚本之后,该脚本没有正确地用分号关闭其最后一行,那么分号就在那里。在这种情况下,这两个脚本可能会合并并导致无效代码。例如,如果您将多个脚本合并为一个响应。
最后的()是执行函数。这是创建一个闭包。私有变量和方法可以在这个函数的范围内声明,不能从脚本外部访问。
【讨论】:
( 开头是使用; 来确保前一个语句终止的原因)。通过说“坏”,一个不公平的——尽管很受欢迎——的判断正在通过。如果组合多个脚本文件(或最小化代码)的工具破坏了 Javascript,那么是 工具 有问题,而不是“坏”脚本。
这个结构:
(function(){ /* something in here */ })()
用于在 Javascript 中创建新的作用域。
More info on function scope here.
关于分号,我以前从未见过。我认为当您连接多个脚本时这是一种安全措施,因为分号在某些情况下在文件末尾是可选的。