閉包的概念
- 閉包的定義其實(shí)很簡(jiǎn)單:函數(shù)
A內(nèi)部有一個(gè)函數(shù)B,函數(shù)B可以訪問(wèn)到函數(shù)A中的變量,那么函數(shù)B就是閉包 - 閉包就是能夠讀取其他函數(shù)內(nèi)部變量的函數(shù)
- 閉包是指有權(quán)訪問(wèn)另一個(gè)函數(shù)作用域中變量的函數(shù),創(chuàng)建閉包的最常見(jiàn)的方式就是在一個(gè)函數(shù)內(nèi)創(chuàng)建另一個(gè)函數(shù),通過(guò)另一個(gè)函數(shù)訪問(wèn)這個(gè)函數(shù)的局部變量,利用閉包可以突破作用鏈域
function A() {
let a = 1
window.B = function () {
console.log(a)
}
}
A()
B() // 1
閉包的特點(diǎn)
- 函數(shù)內(nèi)再嵌套函數(shù)
- 內(nèi)部函數(shù)可以引用外層的參數(shù)和變量
- 參數(shù)和變量不會(huì)被垃圾回收機(jī)制回收