本文通過具體示例向大家詳細介紹了jQuery中的(function($){})(jQuery)的用法和意義,對此有相同困惑的小伙伴可以參考下本文。
簡單的說
- (function($){
- //code
- })(jQuery)
聲明了一個匿名函數,也就是將jQuery對象作為參數傳給函數
給大家舉個例子
- // 全局
- var str = "全局字符串...";
- (function () { // 第1層
- (function () { // 第2層
- (function () { // 第3層
- (function () { // 第4層 層數越多,訪問全局越慢
- console.time('全局');
- for (var i=0; i<1e6; i++) {
- str += Math.random().toString().substr(2, 2);
- }
- console.timeEnd('全局');
- })();
- })();
- })();
- })();
- // 局部
- (function () { // 第1層
- (function () { // 第2層
- (function () { // 第3層
- (function () { // 第4層
- var str = "內部字符串...";
- var random = Math.random;
- console.time('內部');
- for (var i=0; i<1e6; i++) {
- str += random().toString().substr(2, 2);
- }
- console.timeEnd('內部');
- })();
- })()
- })();
- })();
運行代碼 就可以看到效果了,比較慢,騷等片刻。
我剛剛測試發現一些內存小的電腦容易直接導致瀏覽器崩潰、
chrome武裝到牙齒了,連字符串都緩存,看不出多大效果、
和速度應該沒關系,我是這么認為的。
- (function($){
- // code
- })(jQuery)
jQuery插件眾多,你無法確定自己使用的變量或者方法名不于其他插件重名,所以需要將所有插件代碼封裝到一個匿名函數當中;
由于插件使用了jQuery所以需要導入jQuery到匿名函數中,同時使用$變量引用(因為大家已經習慣了使用$)。當然你在全局下也可以使用$,但是無法完成第一個條件;
封裝的代碼必須執行,所以要執行匿名函數同時傳入jQuery參數。
總結
其實是為了保護$符號,不管外界是否引入了另外有干擾$的庫,都不會干擾匿名函數中$就是jQuery的事實,因為他是作為參數被傳進去的。
新聞熱點
疑難解答
圖片精選