1. 程式人生 > >jquery中關於 (function($){...})(jQuery)與$(document).ready();的區別

jquery中關於 (function($){...})(jQuery)與$(document).ready();的區別

這裡實際上是匿名函式

function(arg){...}
這就定義了一個匿名函式,引數為arg

而呼叫函式 時,是在函式後面寫上括號和實參的,由於操作符的優先順序,函式本身也需要用括號,即:
(function(arg){...})(param)
這 就相當於定義了一個引數為arg的匿名函式,並且將param作為引數來呼叫這個匿名函式

而(function($){...}) (jQuery)則是一樣的,之所以只在形參使用$,是為了不與其他庫衝突,所以實參用jQuery

**************************************************************************

其實就等於
var fn = function($){....};
fn(jQuery);

其實可以這麼理解,不過要注意的是fn是不存在的
那個函式直接定義,然後就運行了。就“壓縮”成下面的樣子了
(function($){...})(jQuery) 
**************************************************************************
簡單理解是(function($){...})(jQuery)用來定義一些需要預先定義好的函式
$(function(){ })則是用來在DOM載入完成之後執行\執行那些預行定義好的函式.
**************************************************************************


開發jQuery外掛時總結的一些經驗分享一下。 
一、先看 

jQuery(function(){ 
}); 
全寫為 
jQuery(document).ready(function(){ 

}); 

意義為在DOM載入完畢後執行了ready()方法。 
二、再看 

(function(){ 

})(jQuery); 
其實際上是執行()(para)匿名方法,只不過是傳遞了jQuery物件。 

三、總結 

jQuery(function(){ });用於存放操作DOM物件的程式碼,執行其中程式碼時DOM物件已存在。不可用於存放開發外掛的程式碼,因 為jQuery物件沒有得到傳遞,外部通過jQuery.method也調用不了其中的方法(函式)。 

(function(){ })(jQuery);用於存放開發外掛的程式碼,執行其中程式碼時DOM不一定存在,所以直接自動執行DOM操作的程式碼 請小心使用。