<dfn id="w48us"></dfn><ul id="w48us"></ul>
  • <ul id="w48us"></ul>
  • <del id="w48us"></del>
    <ul id="w48us"></ul>
  • javascript閉包的定義及應用實例分析

    時間:2024-08-25 16:39:02 JavaScript 我要投稿
    • 相關推薦

    javascript閉包的定義及應用實例分析

      官方解釋

      “閉包”是一個擁有許多變量和綁定了這些變量的環境表達式(通常是一個函數),因而這些變量也是環境表達式的一部分。

      通俗解釋

      Javascript中所有的函數都是一個閉包。不過一般來說,嵌套的function產生的閉包更為強大,也是大部分時候我們所說的“閉包”。看如下代碼:

      復制代碼 代碼如下:

      這段腳本在執行完var c=a()之后,變量c實際上就指向了函數b,b中用到了變量i,再執行c()后就會彈出一個窗口顯示i的值。這段代碼其實就是一個閉包,為什么?因為函數a外的變量c引用了函數a內部的函數b。

      Javascript的垃圾回收機制

      由于javascript特殊的垃圾回收機制,才導致了閉包的產生。Javascript垃圾回收機制的大體規則如下:

      在javascript中,如果一個對象不再被引用,那么這個對象就會被GC回收。如果兩個對象相互引用,而不再被第3者引用,那么這兩個互相引用的對象也會被回收。而在上述的腳本中,函數a被b引用,函數b又被函數a外的c所引用,這就是為什么函數a執行后不被回收的原因。

      閉包的應用場景

      1. 保護函數內的變量安全。以上面的例子為例,函數a中變量i只有函數b才能訪問,而無法通過其他途徑訪問到,因此保護了i的安全性。

      2. 在內存中維持一個變量。依然如上面的例子,由于閉包,函數a中的i一直存在于內存中,因此每次執行c(),i都會加1。

      3. 通過保護變量的安全實現JS私有屬性和私有方法(不能被外部訪問)。如下,私有屬性和私有方法在Constructor外是無法訪問的:

      復制代碼 代碼如下:

      function Constructor(…){

      var that = this;

      var membername = value;

      function membername(…){…}

      }

    【javascript閉包的定義及應用實例分析】相關文章:

    Javascript 閉包引起IE內存泄露分析04-01

    javascript的閉包概念怎么理解03-29

    Javascript函數的定義和用法分析03-31

    JavaScript fontcolor方法入門實例03-29

    JavaScript中push(),join() 函數實例詳解03-31

    抽象語法樹在JavaScript中的應用03-25

    javascript分析運算符用法04-01

    JavaScript類定義原型方法的兩種實現的區別04-02

    德國留學申請實例分析03-19

    主站蜘蛛池模板: 青青草原综合久久大伊人精品| 国产乱码精品一品二品| 亚洲无删减国产精品一区| 四虎成人精品| 你懂的国产精品| 无码人妻精品中文字幕| 永久免费精品影视网站| 亚洲精品小视频| 亚洲精品乱码久久久久久中文字幕| 隔壁老王国产在线精品| 久久久久久亚洲精品无码| 亚洲AV无码久久精品狠狠爱浪潮| 日韩精品亚洲人成在线观看| 6一12呦女精品| 精品视频无码一区二区三区 | 久久精品国产免费一区| 一区二区日韩国产精品| 国产成人久久精品二区三区| 97久久精品国产精品青草| 日韩精品无码熟人妻视频| 欧美日韩在线精品一区二区三区激情综合 | 国产福利视精品永久免费| 久久久久久九九99精品| 亚洲国产成人乱码精品女人久久久不卡| 国产精品99久久久久久www| 久久99精品国产一区二区三区| 成人区人妻精品一区二区不卡视频 | 精品卡一卡二卡乱码高清| 中文字幕精品亚洲无线码二区| 免费视频成人国产精品网站| 久久久久亚洲精品中文字幕| 精品国内自产拍在线观看 | 精品乱子伦一区二区三区高清免费播放 | 国产精品亚洲专区无码WEB| 欧美日韩精品一区二区在线播放| 国产成人精品手机在线观看| 少妇人妻无码精品视频app| 亚洲2022国产成人精品无码区| 亚洲精品蜜桃久久久久久| 亚洲高清专区日韩精品| 四虎国产精品永久在线观看|