首頁 > web前端 > js教程 > 一句話概括:什麼是閉包?

一句話概括:什麼是閉包?

零下一度
發布: 2017-06-26 15:47:40
原創
2396 人瀏覽過

一句話概括的話:閉包就是一個函數,捕獲作用域內的外部綁定。

官方的定義:一個擁有許多變數和綁定了這些變數的環境的表達式(通常是一個函數),因為這些變數也稱為該表達式的一部分。

自由變數和閉包的關係:自由變數閉合於閉包的建立。

內部邏輯就是

自由變數:如果一個函數內部有其他函數,那麼這些內部函數可以存取外部函數中宣告的變數(這些變數就稱為自由變數)。

閉包的三個特性:

#1.函數巢狀函數

2.函數內部可以引用外部的參數和變數

3.參數和變數不會被垃圾回收機制回收

#閉包的缺點是常駐記憶體,會增加記憶體的使用量,使用不當很容易造成記憶體外洩.

閉包的好處:

1.希望一個變數可以長期駐紮在記憶體中

2.避免全域變數的污染

3.私有成員的存在

##function fn(){ //閉包fn() var a = 10; function f1(){ a++; # console.log(a); } return f1; } var f = fn(); f(); f(); #f(); 

閉包解決索引值問題:

 

 


## ## # ## 標題> # #
#
  • 1
  • #
  • 2
  • #
  • 3
  • #
  • 4
  • ### text/javascript"> var aLi = document. getElementsByTagName(" li"); for(var i=0;i// (function(i){ // aLi[i].onclick = function(){//當我們點擊迴圈結束時//alert(i)## // }# ################// })(我)###############  aLi[i].onclick=function(index){# return function(){##   #### ###}(我)########## # #
    #
    #charset=" UTF-8">
    #
    ## 
    ## 
    ## 
     
     
     
     
    #
    ##  #type="
    ## window.onload = function(){
    alert(index);
    }
    #
    ## 
    #

    記憶體洩漏問題:

    ie的js物件和dom物件使用不同的垃圾回收機制,因此閉包在ie中會導致記憶體外洩問題,也就是無法銷毀駐留在記憶體中的元素。

    ##var oDiv = document.getElementById("div1");//oDiv用完之後一直駐留在內存  #oDiv.onclic = function(){ alert("oDiv.innerHTML");//這裡用oDiv會導致記憶體洩露 };#  
    function closure(){
     

    closure();

     

    //將oDiv解除引用來避免記憶體洩漏 function closure(){ var oDiv = document.getElementById ("div1");//oDiv用完之後一直駐留在內存 var test = oDiv.innerHTM oDiv.onclic = function(){ alert(test);//這裡用oDiv會導致內存洩漏 }; oDiv = null ; } 

    以上是一句話概括:什麼是閉包?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

    相關標籤:
    來源:php.cn
    本網站聲明
    本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
    熱門教學
    更多>
    最新下載
    更多>
    網站特效
    網站源碼
    網站素材
    前端模板