一个JS菜鸟对闭包的理解

闭包的概念

闭包就是能够读取其他函数内部变量的函数,在JS中,只有函数内部的子函数才能读取局部变量,这就造成的一些使用时的不便。而闭包函数的作用就是,像一座桥梁一样将函数内部和函数外部连接起来。可以保护变量,避免污染。

闭包存在的条件

  1. 函数A内部直接或间接返回一个函数B
  2. B函数内部使用函数A内部的私有变量/私有数据
  3. A函数内部有一个变量接受着函数B

闭包空间

在函数执行的时候,会开辟一个执行空间,所有的代码都会在这个空间里执行,执行完毕以后,这个空间会自动销毁。
闭包函数则会形成一个不会销毁的执行空间(如下图)a函数的执行空间,就叫做闭包空间。其中return的b函数叫做a函数的闭包函数。(b函数访问了a函数的私有变量)
但是这个不会销毁的执行空间,会造成数据缓存,影响网页性能(使用过后需要及时释放)
返回一个函数

关于闭包的案例

数组作为返回值

当你返回值是一个数组的时候,闭包就形成了。我们定义了一个res用来接受fn中return的数组,这时就形成了闭包空间,执行完第一个console.log(res)后,执行空间并不会消失。
当我们给res又定义了一个“值”的时候(让res指向别的位置),函数内部返回的复杂数据类型就没有被接收,闭包空间就会被销毁,再次执行console.log(res)时,就无法访问fn内部空间了。
返回一个数组

关于闭包

闭包的存在,可以避免添加太多的全局函数和全局变量,减少命名冲突。避免全局污染。但是闭包的缺点也很明显,所以,我们应该熟练掌握,在应用的时候,更加得心应手。

新手上路

作为一个JS新手,有很多知识点掌握的不够牢固,努力学习ing,以上是则是我对闭包的一些理解,希望大家多多指正。多多批评。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值