jQuery脚本:函数(窗口,文档,未定义)vs;(函数($,window,document,undefined)
jQuery scripts: function(window, document, undefined) vs ;(function($, window, document, undefined)
我看到一些jQuery脚本嵌入到使用打开的网页中
(function(window, document, undefined){...
或
;(function ( $, window, document, undefined ) {...
我相信,如果脚本与其他文件连接,并且缺少右括号,;
可能会出现,;
会阻止缩小程序删除代码的第一行,但我不确定。
我发布的两个变体是怎么回事?为什么人们这样打开他们的代码,为什么第一个例子缺少美元符号?
这些是包装器,用于为脚本创建尽可能可预测的环境。
在脚本的末尾,您将看到函数表达式的右括号,以及对函数的立即调用,该函数会为函数签名中定义的参数发送值:
(function($, window, document, undefined){
...
})(jQuery, window, document);
如果使用jQuery,则会为其包含$
参数,否则不会。(或者如果你没有想过把它包括在内。)
如您所见,名为undefined
的参数没有任何值。当您不传递参数的值时,它将被设置为值undefined
,因此在函数块内,名为undefined
的参数将具有值undefined
。这样做的目的是因为全局标识符undefined
在最新版本的Javascript之前不是常量,所以在较旧的浏览器中,您可以给属性undefined
一个值,使其不再代表undefined
。(请注意,没有定义值的参数将获得实际值undefined
,而不是全局属性undefined
的当前值。)
正如您所怀疑的,开头的额外分号是为了保护脚本不受可能与其合并的其他脚本的影响。
相关文章:
- 未捕获的类型错误:topFrame.window.changeSelectedBarStyle不是函数,原因是什么
- 如何在javascript中添加带有回调函数的按钮点击事件作为window.conf
- 你能停止window.onload函数吗
- 使用window[variablename]()调用函数;在文档中.准备
- 确定window.load函数的优先级
- 成员函数中的Javascript“this”object==“window”
- 如何只使用一次window.onload函数
- 如何在 window.setInterval 中每分钟运行一次 getJSON 函数
- 如果我在 window.onbeforeunload 事件上确认是,我如何调用另一个 Java 脚本函数
- 为什么不'当用户输入空格或字符太多/不够时,此函数会发出window.alert
- 如何删除/重置window.onfocus函数
- 将Window Onload函数转换为非阻塞
- 为什么window.onload函数未定义
- window.load上单独的javascript文件中的引用函数
- 如何在javascript window.print()函数中打印MathML
- jquery window.load()函数赢得't在ios5上触发
- 函数后延迟window.open()
- window.opener调用函数给了我一个文档.getElementById(..)为null
- 函数 Window.focus 在 IE 中不起作用(8, 9, 10, 11)
- 使用 js 函数 window.history.back() 添加一个参数