JS中对闭包的理解

1.什么是闭包

对于闭包,通常有两种解释,

一种是:闭包是一个函数,是一个在函数外部能够读取其他函数内部变量的函数,而外部函数就形成了一个闭包。更加通俗的讲,把一个函数作为返回值,就是闭包最经典的场景。

官方来讲:闭包是函数与其周围状态的组合。

通过一段代码来直接感受一下什么是闭包:

<script>
    
   function Fn(){   
       var a = 1;
   return function (){
       console.log(a);
         a++;
        return a;
     }
}
    let resFn = Fn();
   console.log(resFn());
</script>

2.闭包的写法及注意

1.  函数嵌套函数:闭包必须有函数嵌套函数的结构

2.内部函数可以访问外部函数的变量:内部函数可以访问外部函数中的变量,即使在外部函数执行完毕后,这些变量仍然可以被访问。

3.外部函数返回内部函数:外部函数必须返回内部函数才能形成闭包。

3.原理

js中的变量,函数在执行的时候都会被加载到栈中,执行完毕在弹出,当使用闭包的时候,函数执行完成后,不会弹出,因为其他的地方还要加载其内部变量.

 4.闭包的优点

 1.局部变量常驻内存,像是全局变量一样,常驻内存,不会污染全局命名空

  2.产生 私有变量  

5.闭包的缺点

 使用不当会很容易造成内存泄露(内存中能存的东西越来越少,像是其他部分被泄露了一样)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值