閉包學習筆記

2021-07-03 11:44:25 字數 931 閱讀 4349

作用域的定義:變數起作用的範圍

區域性變數的作用域是它自己所在的函式及其巢狀函式

示例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 的形式呼叫函式 注...