激情欧美日韩一区二区,浪货撅高贱屁股求主人调教视频,精品无码成人片一区二区98,国产高清av在线播放,色翁荡息又大又硬又粗视频

javascript閉包的定義及應用實(shí)例分析

時(shí)間:2024-08-25 16:39:02 JavaScript 我要投稿
  • 相關(guān)推薦

javascript閉包的定義及應用實(shí)例分析

  官方解釋

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

  通俗解釋

  Javascript中所有的函數都是一個(gè)閉包。不過(guò)一般來(lái)說(shuō),嵌套的function產(chǎn)生的閉包更為強大,也是大部分時(shí)候我們所說(shuō)的“閉包”?慈缦麓a:

  復制代碼 代碼如下:

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

  Javascript的垃圾回收機制

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

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

  閉包的應用場(chǎng)景

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

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

  3. 通過(guò)保護變量的安全實(shí)現JS私有屬性和私有方法(不能被外部訪(fǎng)問(wèn))。如下,私有屬性和私有方法在Constructor外是無(wú)法訪(fǎng)問(wèn)的:

  復制代碼 代碼如下:

  function Constructor(…){

  var that = this;

  var membername = value;

  function membername(…){…}

  }

【javascript閉包的定義及應用實(shí)例分析】相關(guān)文章:

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

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

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

JavaScript fontcolor方法入門(mén)實(shí)例03-29

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

抽象語(yǔ)法樹(shù)在JavaScript中的應用03-25

javascript分析運算符用法04-01

JavaScript類(lèi)定義原型方法的兩種實(shí)現的區別04-02

德國留學(xué)申請實(shí)例分析03-19

激情欧美日韩一区二区,浪货撅高贱屁股求主人调教视频,精品无码成人片一区二区98,国产高清av在线播放,色翁荡息又大又硬又粗视频