JS中的闭包的用途和缺点

想要了解闭包的用途和缺点,首先要先知道什么是闭包吧

1.什么是闭包

闭包就是能够读取其他函数内部变量的函数。在JavaScript中只有函数内部的子函数才能读取局部变量,

所以闭包本身就是一个函数,只不过是处于其它函数的内部,可以理解闭包为:”定义在一个函数内部的

函数“,在本质上,闭包是函数内部和函数外部连接起来的桥梁。

知乎大神说:闭包是指在 JavaScript 中,内部函数总是可以访问其所在的外部函数中声明的参数和变

量,即使在其外部函数被返回(寿命终结)了之后

2.闭包的用途

1.可访问函数内部的变量

2.在内存中维持一个变量。防止函数内部的变量执行完城后,被销毁,使其一直保存在内存中。

一个例子:

        //1. 用最外层的函数来包裹内层函数和受保护的变量
        function parents(){
    
    
            var total=1000;
            //2. 将内部的函数对象return到外部
             return function(num){
    
    
                 total-=num;
                 document.write(`花了${
    
    num}元,还剩下${
    
    total}元<br>`);
             }
        }
        //3. 调用外部函数来获得内层函数,并保存在一个外部变量中
        var child=parents();
        console.log(child); 
        child(100);
        child(200);

输出结果是:

					花了100元,还剩下900元
					花了200元,还剩下700元

3.闭包的缺点

滥用闭包会造成内存泄露

因为闭包中引用到的包裹函数中定义的变量永远不会被释放

所以我们不再改变量或函数的时候应该及时释放这个闭包函数。

猜你喜欢

转载自blog.csdn.net/weixin_45324044/article/details/107981254
今日推荐