js中的閉包

2021-10-06 17:22:26 字數 1375 閱讀 7741

閉包(英文:closure)

1. 閉包是乙個函式與作用域環境(即詞法環境)形成的閉包**

2. 閉包的理解:

廣義的閉包:1.函式 2.這個函式能訪問到函式外部的狀態(也稱函式外部的變數)

並不是我們平時理解的閉包:函式巢狀函式,並且內部函式通過return返回到外部,外部可以訪問內部函式的變數

總結:閉包=函式+自由變數

自由變數:即可以是外部的變數,也可是父級函式的形參

閉包特點

閉包中自由變數長期駐留記憶體,長期駐留記憶體中的變數如果處理不當,會導致記憶體洩露,不用的話要將閉包置為null

可以隔離作用域,模擬塊級作用域

自由變數:就是在函式外部定義的,並且在函式內部可以訪問到的變數就叫自由變數

3.具體講一下閉包的實際應用舉例

作用域鏈:通過在當前函式內部查詢要訪問的變數,如果有則訪問,沒有則向上一級查詢此變數,上級有則訪問之,沒有再再往上上一級查詢,以此類推,直到找到全部window下有沒有,有則訪問,沒有些報錯

是否有點像原型鏈的查詢呢????非常像

實用案例:

1.計數器

//功能:遞增,遞減,獲取遞增或遞減之後的值

var counter=function() 

return ,

//減decrement:function() ,

//獲取值

getvalue:function()

}}

2.改變頁面字型大小

function setsize(size) 

}var size12=setsize(12);

var size40=setsize(40)

var size50=setsize(50);

3.定時器累加

//要求每隔1秒列印1,2,3,…10

//settimeout是非同步執行的,非同步佇列

for(var i=1;i<=10;i++) ,2000*j)

})(i)

} console.log('最後列印:',i)

for(let i=1;i<=10;i++) ,1000*i)

}

4.封裝元件:

立即呼叫函式

(function(win,doc) 

})(window,document)

js 中的閉包

先理解 js 中的執行環境 閉包按中文的意思就是關上乙個包的意思。如果我們把函式的變數物件當做是乙個包的話,那這個詞很形象體現了它的作用 函式被呼叫時會建立它的執行環境,函式語句執行完後程式會自動銷毀這個函式的執行環境,但是當乙個函式中宣告了另乙個函式 子函式 並且如果存在對這個子函式引用,就會形成...

js 中的閉包

閉包 閉包是指有權訪問另乙個函式作用域中的變數的函式,建立閉包的常見方式是 在乙個函式內部建立另乙個函式 從定義上講 js 中所有的函式都是閉包 function a returnb var c a c 以上 的特點 1 函式b巢狀在函式a內部 2 函式a返回函式b。當函式a的內部函式b被函式a外的...

JS中的閉包(Closure)

閉包是指有權訪問另乙個函式作用域中的變數的函式。最常見的就是在乙個函式內部建立另外乙個函式。以trialfunction 函式為例 function trialfunction property else if a1 b1 else 上述 中,內部函式訪問了外部函式中的變數property。即使這個...