再看函式的閉包

2022-02-25 07:32:53 字數 2433 閱讀 1251

1

function

createfunctions();

9console.log(i);10}

11 console.log("最終i : ", i);

1213

//return result;

14 console.log(result[0]());//

1015 console.log(result[1]());//

1016 console.log(result[2]());//

1017 console.log(result[3]());//

1018 console.log(result[4]());//

1019 console.log(result[5]());//

1020 console.log(result[6]());//

1021 console.log(result[7]());//

1022 console.log(result[8]());//

1023 console.log(result[9]());//

1024 console.log(result[10]);//

undefined25}

2627 createfunctions();

記憶體中僅儲存全域性作用域,但是閉包的情況有所不同!

我們知道,函式在執行結束之後區域性變數就會被**,(全域性作用域,本地活動物件)。以上為例,最終的i值沒有被銷毀,為 10. 所以result 中引用的i 一直是 10。

但是通過改寫:

1

function

createfunctions();

10})(i);

11console.log(i);12}

13 console.log("最終i : ", i);//

1014

15//

return result;

16 console.log(result[0]());//

017 console.log(result[1]());//

118 console.log(result[2]());//

219 console.log(result[3]());//

320 console.log(result[4]());//

421 console.log(result[5]());//

522 console.log(result[6]());//

623 console.log(result[7]());//

724 console.log(result[8]());//

825 console.log(result[9]());//

926 console.log(result[10]);//

undefined27}

28 createfunctions();

上面**相當於:

1

function

createfunctions();

11})();

12console.log(i);13}

14 console.log("最終i : ", i);//

1015

16//

return result;

17 console.log(result[0]());//

018 console.log(result[1]());//

119 console.log(result[2]());//

220 console.log(result[3]());//

321 console.log(result[4]());//

422 console.log(result[5]());//

523 console.log(result[6]());//

624 console.log(result[7]());//

725 console.log(result[8]());//

826 console.log(result[9]());//

927 console.log(result[10]);//

undefined28}

29 createfunctions();

函式閉包python中的閉包

本文純屬個人見解,是對前面學習的總結,如有描述不正確的地方還請高手指正 單簡說,閉包就是根據不同的置配息信到得不同的結果 再來看看專業的解釋 閉包 closure 是詞法閉包 lexical closure 的簡稱,是引用了由自變數的函式。這個被引用的由自變數將和這個函式一起存在,即使已離開了造創它...

函式的閉包

閉包 在js中函式可以構成閉包,一般函式是乙個 結構的封閉結構,即包裹的特性,同時根據作用域規則,只允許函式訪問外部資料 泛指全域性變數 外部無法訪問函式內部的資料,就是封閉的對外不公開的特性,因此時候函式可以構成閉包 解決的問題 閉包不允許外界訪問 要解決的問題是間接訪問該資料,函式就是閉包結構也...

函式的閉包

函式名的應用 def func print 666 1.1 函式名就是函式的記憶體位址。print func 1.2 函式名可以做變數。def func print 666 f1 func1 f2 f1 f2 1.3 函式名可以作為函式的引數。1.4 函式名還可以當函式的返回值。def wraape...