什么是闭包?

1.什么是闭包?

闭包就是在一个函数中,声明了一个变量,在这个函数中又有一个函数,里面的方法引用了这个变量,导致第一个函数运行完了无法对变量进行
回收,就形成了闭包。
简单的闭包实现

function(){
    let a=12;
    document.body.onclick=function(){
        alert(a);
    }
}
复制代码

一般来说,一个函数在执行完之后,就会被回收,释放资源。但是在这个函数中,变量a因为有了在body上面点击的引用,导致变量a无法被回收,
一直存在,所以被称作闭包。闭包能够使一个变量无法被系统回收。

闭包能够用在什么地方呢?
1.可以创造私有变量
2.节流防抖需要利用闭包的特性

因为js没有像java那样的访问修饰符(public,private,protect等),所以无法做到对于一个变量的不直接修改,而要想做到这点,使用闭包可以
提供解决方法。

function show() {
    let num = 12;
    return {
        get() {
            console.log(this);
            return num;
        },
        set(val) {
            //可以加上判断
            num = val;
            return true;//return true是告诉js这次修改是正确的。不然可能会有问题
        }
    }
}

let a = show();
console.log(a.get());//12
a.set(22);
console.log(a.get());//22
复制代码

这样就避免了直接对属性的修改,也能够进行判断。

以上为个人理解,如有不对,请留言
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享