我们在写Jquery代码时开头都需以$(function(){}),自己编写函数代码实现一些功能,当然为了结构清晰、美观,我们可以把所写函数封装在自己的.js(eg.myJs.js)中方便调用;
而在看jquery插件等源码时,发现源代码的开头都是以(function(){})(jquery);
那么同样是.js文件,为什么会有不同呢,这两者有什么区别呢?现小编和大家一起学习。
$(function(){})是$(document).ready(function(){})的缩写,表明在页面所有的DOM加载完毕触发事件,
(function($){})(jquery),也叫立即执行的函数表达式,相当于先申明一个函数,申明完直接调用,function aa($){},aa(jQuery).作用是可以用它创建命名空间,只要把自己所有的代码都写在这个特殊的函数包装内,那么外部就不能访问,除非你允许(变量前加上window,这样该函数或变量就成为全局)。各JavaScript库的代码也基本是这种组织形式。
其中function($)()是带参数$的匿名函数,传递了jQuery对象,该函数不能直接调用,通过加括号(function($){})变成函数表达式,当然也可以使用+,-,~等其他一元操作符指明这是个函数表达式,如:+function($){}(window.jQuery)也是常见的表达形式。函数表达式通过末尾的()来调用并运行。
$(function(){})用来在DOM加载完成之后运行执行那些预行定义好的函数或存放操作DOM对象的代码,执行其中代码时DOM对象已存在。不可用于存放开发插件的代码,因为jQuery对象没有得到传递,外部通过jQuery.method也调用不了其中的方法(函数)。 (DoM对象,即是DOM中每个节点,以及对节点的操作,如getElementById返回的就是一个对象,每个节点如元素节点p,li等都是对象。而jQuery对象是通过包装过DOM对象后产生的对象,是jQuery独有的,如$("#id")返回的就是一个jQuery对象)。
(function($){})(jquery)用于定义一些需要预先定义好的函数和存放开发jQuery插件的代码,执行其中代码时DOM不一定存在,所以直接自动执行DOM操作时要小心使用。
mark!