閉包是作用域應(yīng)用的特殊情況 它有兩種變現(xiàn)
1 . 函數(shù)作為返回值被返回
function create() {
const a = 100;
return function(){
console.log(a)
}
}
const fn = create();
const a = 200;
fn(); //100
2 . 函數(shù)作為參數(shù)被傳遞
function print(fn) {
const a = 200;
fn()
}
const a = 100;
function fn(){
console.log(a)
}
print(fn) //100
總結(jié):所有自由變量的查找是在函數(shù)定義的地方向上一級(jí)作用域查找 悼尾,而不是在調(diào)用的地方。
tips:
閉包會(huì)引起內(nèi)存泄漏坊秸,所以再函數(shù)結(jié)束前應(yīng)該將其賦值為null