用陣列理解閉包

2021-08-18 20:13:38 字數 724 閱讀 9108

閉包:乙個函式可以把自己內部的語句,和自己宣告時所處的作用域封裝在乙個密閉的環境中

函式在定義時,能夠記住自己函式體以及所處的外部環境

每個函式都是閉包,每個函式天生能記住自己定義時所處的作用域環境。

這是乙個陣列,陣列中有10個函式,目的:想要輸出函式的角標,也就是說arr[0]()彈出0;arr[2]彈出2  

var arr = ;

for(var i=0; i<10; i++)

}arr[0]();

arr[2]();

問題:

這樣寫的結果就是不管是呼叫那個函式,彈出的始終是10,這是由於閉包引起的,

這個跟函式閉包不衝突,所謂的記住變數,在這裡只是認識這個變數是i,而不是z,j,k,由於函式只是定義賦值但並沒有執行(這裡沒有呼叫),i是動態變化的。        這個迴圈的作用:迴圈10次,給10個元素指向乙個函式,每個元素指向的函式都認識i(函式閉包能記住作用域)但是沒有呼叫,至於它的值是多少,得看呼叫時i的最新值,呼叫的時候肯定是迴圈完了,迴圈完以後的i值肯定是10,呼叫的時候上面的for迴圈迴圈完了,所以也就是10了。i只有乙個,每次呼叫都是一樣的。

舉個例子:

開始認識乙個人,不知道他有沒有錢,當你想跟他借錢的時候,他的錢有多少一定是現在的卡里的錢數,他一年前,兩年前有多少錢都跟他現在沒關係

python閉包怎麼理解 Python 閉包的理解

很多函式型的語言都有閉包這一概念,比如python的兄弟js。人們剛聽到閉包這一概念總會覺得它很晦澀,難以理解。其實不然,主要是他的名字起得太抽象了,讓人誤以為很難。下面舉乙個例子 coding utf 8 def foo nums 0 5 for i in range 5 nums i lambd...

javaScript閉包理解

以下是樓主的見解,如有錯誤請幫忙矯正。以下是是乙個簡單的閉包例子 function creatfunc var myfunc creatfunc alert myfunc 變數variable是乙個閉包,閉包的生命週期一般為呼叫閉包的物件為空 null 時結束。舉乙個複雜點的例子 var singl...

JS閉包理解

下圖例項 body ul li 1 li li 2 li li 3 li ul body html script vara document.getelementsbytagname li for vari 0 i a.length i i 如何從外部讀取區域性變數 functionvisitinn...