闭包一定有return吗?闭包一定会引起内存泄漏吗?
答案都是:否
function outer(){
const a = 1;
function f(){
console.log(a)
}
f();
}
outer();
这也属于闭包,但是因为没有使用return,所以不会出现内存泄漏。
内存泄漏指的是下列情况:
下列情况是闭包的常见应用情况:
function count(){
let i = 0;
function fn(){
i++;
console.log('运行次数:'+i)
}
return fn;
}
let testFn = count();
上述函数,testFn=count的调用后的值也就是fn。那么执行testFn 就相当于执行fn,i是递增的,这样就使外部函数使用了内部变量。同样因此,testFn是全局变量不会被销毁,所以i变量也不会被销毁。