作用域的定義:變數起作用的範圍
區域性變數的作用域是它自己所在的函式及其巢狀函式
示例1:
function getcounter()
}var counter = getcounter();
counter();
counter();
counter();
//釋放閉包與它的環境
counter = null;
counter = getcounter();
counter();
counter();
counter();
//--------------------------------------------示例1結束
普通區域性變數在其所在的函式執行完成後就被銷毀了。
一旦函式中有巢狀函式被傳出,則函式中的所有區域性變數(或叫執行環境)在函式結束後將不被銷毀。
當乙個(巢狀)函式在建立它的環境之外執行的時候,就是閉包。
閉包組成包含函式和建立它的環境。
切斷對閉包的引用可以釋放閉包
示例2:
function getcounter(step)
}var counter = getcounter(1);
counter();
counter();
counter();
//釋放閉包與它的環境
counter = null;
counter = getcounter(2);
counter();
counter();
counter();
//--------------------------------------------示例2結束
從示例2看,閉包實際是函式工廠中創造出來的產物。
函式工廠可以用閉包的方式構造出共同的函式體和不同的執行環境。
閉包 學習筆記
學習閉包,邏輯有點混亂,現在記錄一下學習過程。功能 實現函式容器內儲存乙個變數,記錄該函式執行狀態 原理 看到一篇blog 總結一下閉包的作用 一般來講,當函式執行完畢之後,函式內部的區域性活動物件就會被銷毀,記憶體中僅儲存全域性作用域,即js的記憶體 機制。如果這個函式內部又巢狀了另乙個函式,而這...
python學習筆記 閉包
乙個函式a和乙個函式b,其中b函式位於a函式體內部,同時b函式體內呼叫了b函式之外,a函式之內的其他變數x 包括a中傳遞過來的引數 此時,x稱為b函式的環境變數,b函式和變數x就構成了乙個閉包。而函式b是需要返回的,也就是返回函式b,其中在返回的時候,對a引數x的呼叫也包括在了裡面,有點封閉包含的意...
Python學習筆記 閉包
在學習閉包之前,我們先要弄懂一件事兒。同理 test其實就是乙個變數,變數中存放著函式體的位址,就像a變數中存放著100的位址一樣。t test實質上就是淺拷貝行為。將變數test中的位址存放到變數t中 我們如果要呼叫test函式,test 當t獲取了函式體的位址後,同樣可以以t 的形式呼叫函式 注...