這里實(shí)際上是匿名函數(shù) function(arg){...} 這就定義了一個(gè)匿名函數(shù),參數(shù)為arg 而調(diào)用函數(shù) 時(shí),是在函數(shù)后面寫上括號(hào)和實(shí)參的,由于操作符的優(yōu)先級(jí),函數(shù)本身也需要用括號(hào),即: (function(arg){...})(param) 這 就相當(dāng)于定義了一個(gè)參數(shù)為arg的匿名函數(shù),并且將param作為參數(shù)來(lái)調(diào)用這個(gè)匿名函數(shù) 而(function($){...}) (jQuery)則是一樣的,之所以只在形參使用$,是為了不與其他庫(kù)沖突,所以實(shí)參用jQuery ************************************************************************** 其實(shí)就等于 var fn = function($){....}; fn(jQuery); 其實(shí)可以這么理解,不過要注意的是fn是不存在的 那個(gè)函數(shù)直接定義,然后就運(yùn)行了。就“壓縮”成下面的樣子了 (function($){...})(jQuery) ************************************************************************** 簡(jiǎn)單理解是(function($){...})(jQuery)用來(lái)定義一些需要預(yù)先定義好的函數(shù) $(function(){ })則是用來(lái)在DOM加載完成之后運(yùn)行\(zhòng)執(zhí)行那些預(yù)行定義好的函數(shù). ************************************************************************** 開發(fā)jQuery插件時(shí)總結(jié)的一些經(jīng)驗(yàn)分享一下。 一、先看 jQuery(function(){ }); 全寫為 jQuery(document).ready(function(){ }); 意義為在DOM加載完畢后執(zhí)行了ready()方法。 二、再看 (function(){ })(jQuery); 其實(shí)際上是執(zhí)行()(para)匿名方法,只不過是傳遞了jQuery對(duì)象。 三、總結(jié) jQuery(function(){ });用于存放操作DOM對(duì)象的代碼,執(zhí)行其中代碼時(shí)DOM對(duì)象已存在。不可用于存放開發(fā)插件的代碼,因 為jQuery對(duì)象沒有得到傳遞,外部通過jQuery.method也調(diào)用不了其中的方法(函數(shù))。 (function(){ })(jQuery);用于存放開發(fā)插件的代碼,執(zhí)行其中代碼時(shí)DOM不一定存在,所以直接自動(dòng)執(zhí)行DOM操作的代碼 請(qǐng)小心使用。 |
|