閉包一定有return嗎忌怎?閉包一定會(huì)引起內(nèi)存泄漏嗎炭晒?
答案都是:否
function outer(){
const a = 1;
function f(){
console.log(a)
}
f();
}
outer();
這也屬于閉包伙菜,但是因?yàn)闆]有使用return衍慎,所以不會(huì)出現(xiàn)內(nèi)存泄漏转唉。
內(nèi)存泄漏指的是下列情況:
下列情況是閉包的常見應(yīng)用情況:
function count(){
let i = 0;
function fn(){
i++;
console.log('運(yùn)行次數(shù):'+i)
}
return fn;
}
let testFn = count();
上述函數(shù),testFn=count的調(diào)用后的值也就是fn西饵。那么執(zhí)行testFn 就相當(dāng)于執(zhí)行fn酝掩,i是遞增的,這樣就使外部函數(shù)使用了內(nèi)部變量眷柔。同樣因此期虾,testFn是全局變量不會(huì)被銷毀,所以i變量也不會(huì)被銷毀驯嘱。