javaScript函数闭包

理解闭包就要了解作用域,javaScript的作用域有两种,全局作用域函数作用域。

函数内部能获取外部的全局变量的

 而外部是无法直接获取函数内部的变量

 通过函数里面再创建一个函数,来达到拿到外部函数内部的变量

 在AA函数里,创建一个函数BB,因为BB函数在AA函数的内部,所以是可以访问AA的变量的,

但是反过来就不行。这就是javascript的"链式作用域",父对象的所有变量,对子对象是可见的,反之就不行了。

这样闭包就是函数BB了,即能够读取函数内部的变量的函数。闭包最大的特点,就是它可以“记住”诞生的环境,比如f2记住了它诞生的环境f1,所以从f2可以得到f1的内部变量。

闭包就是函数内部与外部连接的桥梁

闭包的最大用处有两个,一个是可以读取外层函数内部的变量,另一个就是让这些变量始终保持在内存中,即闭包可以使得它诞生环境一直存在。

闭包使得内部变量记住上一次调用时的运算结果

start就是函数f1的内部变量,通过闭包fn,start的值被保留。闭包fn使得函数f1的内部环境,一直存在。

为什么一直存在,因为闭包使用里f1的变量(start),导致外层函数(f1)不能从内存释放,

只要闭包没被垃圾回收机制清除,外层函数运行环境也不会被清除的,它的start变量就一直提供给

fn闭包使用。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值