(1) 閉包是指有權訪問另一個函數作用域中的變量的函數。(這與當函數被調用是會創建一個執行函數和相應的作用域鏈。作用域鏈本質上是指向變量對象的指針列表,只引用,不實際包含變量對象)。作用域鏈中,函數內部變量對象優先級最高,然后,由最近的外部函數依次向后排。
(2) 封閉性:外界無法訪問閉包內部的數據,如果在閉包內聲明變量,外界是無法訪問的,除非閉包主動向外界提供訪問接口; 持久性:一般的函數,調用完畢之后,系統自動注銷函數,而對於閉包來說,在外部函數被調用之后,閉包結構依然保存在。
(3) 缺點:由於閉包攜帶包含它函數的作用域,因此比其他函數占用的內存更多。
優點:減少創建全局變量 減少傳遞給函數的參數量 封閉性
(4)閉包可以讀取函數內部的局部變量;這些變量的值始終保存在內存中
函數執行后,函數執行環境的作用域會被銷毀,但是活動對象不會銷毀,只有將匿名函數銷毀后才可以銷毀活動對象。可以將保存函數的變量賦值為null,將可銷毀匿名函數作用域。
常見創建閉包方法:在一個函數內部創建另一個函數。