JS筆記 閉包

2021-09-10 05:51:58 字數 638 閱讀 3932

js中變數是function級作用域,也就是說,在function中定義的變數可以再function內部(包括內部定義的巢狀function中)使用,而在function外部無法使用,但是,js中,函式就是一塊儲存了現有資料的記憶體,是要找到這塊記憶體就可以進行呼叫。因此,如果想辦法獲取到內部的巢狀函式,就可以在外部使用使用巢狀函式來呼叫內部定義的區域性變數

functionf1(

)return f2 //關鍵點

}var f=f1(

)f()

//1

函式f1中定義了變數v,正常情況下在f1外面是無法訪問v的,但是f1中巢狀定義的函式f2是可以訪問v的,而且在呼叫f1時會返回函式f2,這樣就可以在f1外面訪問f1的區域性變數 v ,這就是閉包,當然,如果需要還可以在f2中直接返回v的值,就可以在f1外部獲取v的值。

let f;f=

function()

}let oref=f(

);oref.note=

"danger"

console.

log(oref.note)

//輸出danger

高手文章:

groovy語法之閉包:

為什麼js會有閉包:

說說js閉包

js閉包涉及到作用域,js的作用域有兩種,全域性變數和區域性變數,全家變數就是在函式外宣告的,區域性變數是在函式內宣告的,函式內部可以直接讀取全域性變數 但是函式外部自然無法讀取函式內的區域性變數 函式內部宣告變數的時候,要用var不然就是個全域性變數 有時候需要得到函式內的區域性變數 濫用閉包會可...

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...

JS基礎 閉包

注 自由變數是既不是在本地宣告又不作為引數傳遞的一類變數。function a return b var b a b hello closure 定義乙個函式a a中定義了函式b a中返回b 執行a 把a的返回結果賦值給變數b 執行b 閉包會在父函式外部,改變父函式內部變數的值。所以,如果你把父函式...