js闭包
闭包=内层函数+外层函数的变量
闭包作用:
1.封闭数据,实现数据私有,外部也可以访问函数内部的变量
2.闭包很有用,因为它允许将函数与其所操作的某些数据(环境)关联起来
闭包可能引起的问题:
内存泄露
function fn(){
let i = 0
function fun(){
i++
console.log(`函数第${i}次调用`);
}
return fun
}
const di = fn()
fn中i只会在di赋值时初始化一次,后续调用di()相当于调用fn内部fun函数,实现i递增,
由于di是全局的,使fun也是全局的,fun调用i,导致i从根部一直会被扫描到,那么通过标记清除法就无法清除i,从而产生内存泄露
内部函数调用外部函数变量才构成闭包
外部可以访问使用函数内部的变量
闭包作用:封闭数据,提供操作,外部也可以访问函数内部的变量
浙公网安备 33010602011771号