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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

《JavaScript 高级程序设计》笔记 第7章及以后

發布時間:2023/12/10 javascript 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《JavaScript 高级程序设计》笔记 第7章及以后 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

第7章 函數表達式

  • 匿名函數的name屬性是空字符串;
  • 閉包是函數:閉包是有權訪問另一個函數作用域中變量的函數;(P181 副作用,解釋了點擊li彈出循環最后值的原因)
  • 當某個函數第一次被調用時,會創建一個執行環境及相應作用域鏈,并把作用域鏈賦值給一個特殊內部屬性[[scope]],使用this、arguments和命名參數來初始化函數的活動對象;
  • 無論什么時候在函數中訪問一個變量時,就會從作用域鏈中搜索具有相應名字的變量。一般來講,當函數執行完畢后,局部活動對象就會被銷毀,內存中僅保存全局作用域(全局執行環境的變量對象);
  • 閉包不然:在函數內部定義的函數,會將外部函數的活動對象,添加到自己的作用域鏈中;
  • 閉包的副作用:閉包只能取得外部函數中任何變量的最后一個值;
  • function createFunctions() {var result = new Array()for(var i = 0;i < 10; i++){return[i] = function() {return i}}return result } // 每個函數的作用域鏈中都保存著createFunctions()函數的活動對象,它們引用同一個變量i
  • 創建一個匿名函數,強制讓閉包的行為符合預期:
  • function createFunctions() {var result = new Array()for(var i = 0;i < 10; i++){return[i] = function(num) {return function() {return num}}(i)}return result } //沒有直接將閉包賦值給數組; //定義了一個匿名函數,并將立即執行該函數的結果賦值給數組; //匿名函數有參數num,也是最終函數要返回的值; //在調用每個匿名函數時,傳入變量i,函數參數是按值傳遞的,會將變量i的當前值傳給num //匿名函數的內部,又創建并返回了一個訪問num的閉包
  • 匿名函數的執行環境具有全局性,其this對象通常指向window:
  • var name = "The Window" var obj = {name: "My Obj",getNameFunc: function(){return function(){return this.name}} } obj.getNameFunc()() // The Window
  • JavaScript不會告訴你是否多次聲明了同一個變量,遇到這種情況,它會對后續的聲明視而不見;
  • 用匿名函數來模仿塊級作用域:
  • (function(){// 這里是塊級作用域 })()

    錯誤寫法:

    function(){// 這里是塊級作用域 }() 錯誤: 函數聲明后面不能跟圓括號

    第8章 BOM

    • window對象
    • location對象
    • navigator對象
    • screen對象
    • history對象
  • 嘗試訪問未聲明的變量會拋出錯誤,但是通過查詢window對象,可以知道某個可能未聲明的變量是否存在:
  • var b = a //報錯,這里a未定義 var c = window.a // c的值是undefined

    第9章 客戶端檢測

    • 能力檢測:
      1) 先檢測達成目的的最常用的特性(避免測試多個條件)
      2) 必須測試實際要用到的特性

    第10~12章 DOM

    • NodeList是有生命、呼吸的對象,而不是在我們第一次訪問它們的某個瞬間拍攝下來的一張快照;
    • 如果列表中只有一個節點,那么該節點的nextSibling和previousSibling都為null;
    • ownerDocument是所有節點都有的屬性,指向整個文檔的文檔節點;

    第13章 事件

    • 建議使用事件冒泡;
    • 事件處理程序中的代碼在執行時,有權訪問全局作用域中的任何代碼;
    • 在HTML中指定事件處理程序的缺點:
      1)存在時差問題:用戶可能在頁面剛顯示按鈕時,就點擊,如果點擊事件是在按鈕下方、頁面的最底部定義的,就會引發錯誤,可以封裝在try-catch塊中;
      2)事件處理程序的作用域鏈在不同瀏覽器中可能會有不同效果;
      3)HTML和JavaScript緊密耦合;
    • 事件對象
      1) DOM中:event對象作為參數;
      2) IE中:event對象作為window對象的屬性

    總結

    以上是生活随笔為你收集整理的《JavaScript 高级程序设计》笔记 第7章及以后的全部內容,希望文章能夠幫你解決所遇到的問題。

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