jQuery(function(){
});
全写为
jQuery(document).ready(function(){
});
$就是jquery的简写,$()就是一个选择器,document是html的所有元素,$(document)返回一个数组,而这个数组是一个对象,这个对象调用ready方法,function则是ready里面的参数,就是说等这个页面全部加载完之后就去执行写入的js。而且在$(document).ready(function(){ });里面写入的js特效是和下一个里面写入的特效是不冲突的,俩者之间是不影响的,因此可以通过$(function(){});在一个页面中加载多个js。
个人意见:不管怎么样,要写一个js特效,就加一个$(document).ready(function(){ });,当然这个是有简写的,就是$(function(){});
$(document).ready 里的代码是在页面内容都加载完才执行的,你直接写到script标签里,当页面加载完这个script标签就会执行里边的代码了,如果你标签里执行的代码调用了当前还没加载过来的代码或者dom,那么就会报错, 当然如果你把script标签当到页面最后面那么就没问题了和ready差不多的效果
(function(){
})(jQuery);
其实际上是执行()(para)匿名方法,只不过是传递了jQuery对象。
function(arg){…}
这就定义了一个匿名函数,参数为arg
而调用函数时,是在函数后面写上括号和实参的,由于操作符的优先级,函数本身也需要用括号,即:
(function(arg){…})(param)
这就相当于定义了一个参数为arg的匿名函数,并且将param作为参数来调用这个匿名函数
而(function($){…})(jQuery)则是一样的,之所以只在形参使用$,是为了不与其他库冲突,所以实参用jQuery
相当于funtion output(s){…};output(jQuery);或者var fn=function(s){…};fn(jQuery);
这三个的作用是一样的,本人比较需要用第一种、书写简单
jQuery(function(){ });用于存放操作DOM对象的代码,执行其中代码时DOM对象已存在。不可用于存放开发插件的代码,因 为jQuery对象没有得到传递,外部通过jQuery.method也调用不了其中的方法(函数)。
(function(){ })(jQuery);用于存放开发插件的代码,执行其中代码时DOM不一定存在,所以直接自动执行DOM操作的代码 请小心使用。
文/stupidnb(简书作者)
原文链接:http://www.jianshu.com/p/5d04e202e9aa
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。