日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

jQuery源码分析

發布時間:2023/12/2 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 jQuery源码分析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
(function( window, undefined ) {// jquery code })(window);

  

  • 這是一個自調用匿名函數。什么東東呢?在第一個括號內,創建一個匿名函數;第二個括號,立即執行
  • 為什么要創建這樣一個“自調用匿名函數”呢?
  • 通過定義一個匿名函數,創建了一個“私有”的命名空間,該命名空間的變量和方法,不會破壞全局的命名空間。這點非常有用也是一個JS框架必須支持的功能,jQuery被應用在成千上萬的JavaScript程序中,必須確保jQuery創建的變量不能和導入他的程序所使用的變量發生沖突。

  • 匿名函數從語法上叫函數直接量,JavaScript語法需要包圍匿名函數的括號,事實上自調用匿名函數有兩種寫法(注意標紅了的右括號):
  • (function() {

    ????console.info( this );

    ????console.info( arguments );

    }( window )?);

    (function() {

    ????console.info( this );

    ????console.info( arguments );

    })( window );

  • 為什么要傳入window呢?
  • 通過傳入window變量,使得window由全局變量變為局部變量,當在jQuery代碼塊中訪問window時,不需要將作用域鏈回退到頂層作用域,這樣可以更快的訪問window;這還不是關鍵所在,更重要的是,將window作為參數傳入,可以在壓縮代碼時進行優化,看看jquery-1.6.1.min.js:

    (function(a,b){})(window);?// window?被優化為?a???

  • 為什么要在在參數列表中增加undefined呢?
  • 在?自調用匿名函數?的作用域內,確保undefined是真的未定義。因為undefined能夠被重寫,賦予新的值。

    undefined = "now it's defined";

    alert( undefined );

    瀏覽器測試結果:

    瀏覽器

    測試結果

    結論

    ie

    now it's defined

    可以改變

    firefox

    undefined

    不能改變

    chrome

    now it's defined

    可以改變

    • opera

    now it's defined

    可以改變

  • 注意到源碼最后的分號了嗎?
  • 分號是可選的,但省略分號并不是一個好的編程習慣;為了更好的兼容性和健壯性,請在每行代碼后加上分號并養成習慣。


    更多專業前端知識,請上 【猿2048】www.mk2048.com

    總結

    以上是生活随笔為你收集整理的jQuery源码分析的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。