我想知道这里到底发生了什么。我知道$(document).ready(function() {...});
做了什么以及什么时候生效。同样适用于jQuery(function($) {...}
。
但这是做什么的?
!function ($) {
$(function(){
var $window = $(window)
//normal jquery stuff
})
}(window.jQuery)
是否在加载jQuery时加载,而不是在文档“准备好”时加载?
答案 0 :(得分:8)
它创建一个闭包,其中变量$
被赋值为window.jQuery
。
目的是允许将无法命名的变量$
用作jQuery
的快捷方式,而不会与使用$
的大量其他库和自定义函数冲突变量名。
答案 1 :(得分:4)
使用!函数之前的运算符使其被视为表达式
!function () {}()
答案 2 :(得分:3)
您正在查看的语法用于设置jQuery闭包。这用于确保jQuery $
变量在代码中可用且正确;即它不能被全球范围内的任何其他东西覆盖(如果你使用多个库,这是可能的)。
这种技术经常被jQuery插件作者使用 - 如果你有兴趣了解更多,docs are here,并更详细地解释为什么你要将jQuery代码包装在像这样的函数中此
在您的示例中唯一不同的兴趣点是,在文档中,函数包含在括号中,而在示例中,您已经给出了它,前面是!
!
是not
运算符,但实际上并没有用于任何事情;我认为只是在那里而不是括号来保存单个字符的代码。如果你正在缩小javascript,可能会有所帮助。
答案 3 :(得分:0)
不太确定,但我猜这有点等同于(function(){})()
方法,而且关于js闭包。它确保$
和jQuery
是同一件事
答案 4 :(得分:0)
'!'是一个'不'的运营商。它在代码中没有做任何事情。它存在的唯一原因是表示该函数将立即执行。
您可能还会看到用括号括起来的函数。
(function() {}());
无论使用什么是个人偏好。