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,从而产生内存泄露

内部函数调用外部函数变量才构成闭包
外部可以访问使用函数内部的变量

闭包作用:封闭数据,提供操作,外部也可以访问函数内部的变量

posted @ 2025-06-14 23:56  我就起个名字不至于吧  阅读(6)  评论(0)    收藏  举报