我看到嵌入到以
(function(window, document, undefined){...
或
打开网页,一些jQuery的脚本;(function ($, window, document, undefined) {...
我相信;
能在那边如果脚本是连接在一起的其他文件,并没有缺少一个右括号,从删除代码的第一行;
停止minifier,但我不知道。
与我发布的两个变体有什么关系?为什么人们会这样打开他们的代码,为什么第一个例子会丢失美元符号?
我看到嵌入到以
(function(window, document, undefined){...
或
打开网页,一些jQuery的脚本;(function ($, window, document, undefined) {...
我相信;
能在那边如果脚本是连接在一起的其他文件,并没有缺少一个右括号,从删除代码的第一行;
停止minifier,但我不知道。
与我发布的两个变体有什么关系?为什么人们会这样打开他们的代码,为什么第一个例子会丢失美元符号?
这些都是为尽可能预测脚本创建环境的包装器。
在脚本,你将看到函数表达式右括号,并在在函数签名中定义的参数值发送函数直接调用的末尾:
(function($, window, document, undefined){
...
})(jQuery, window, document);
如果您使用jQuery,你将包括$
参数,否则不包含。 (或者如果您没有考虑包含它)。
如您所见,名为undefined
的参数没有任何值。如果您未传递参数值,则会将其设置为值undefined
,因此在功能块内,名为undefined
的参数的值将为undefined
。这样做的目的是因为全球标识符undefined
直到最近版本的Javascript才是常量,所以在较旧的浏览器中,您可以给属性undefined
一个值,以便它不再代表undefined
。 (请注意,没有定义值的参数将获得实际值undefined
,而不是全局属性undefined
的当前值。)
如您所怀疑的,开头的额外分号用于保护脚本免受其他脚本它可能会合并。
可能是因为在第一种情况下,'jQuery'没有作为参数传递给函数。这完全取决于编写代码的人。至于分号:http://stackoverflow.com/questions/1031718/what-is-the-consequence-of-this-bit-of-javascript。 – 2013-02-22 17:59:15