有关函数闭包

有关函数闭包

概念

闭包是由函数及其相关引用环境组合而成的实体,一般通过在匿名函数中引用外部函数的局部变量或者全局变量构成。
闭包=函数+引用环境

如果函数返回的闭包引用了该函数的局部变量

  • 多次调用该函数,返回的多个闭包所引用的外部变量是多个副本,原因是每次调用函数都会为局部变量分配内存
  • 用一个闭包函数多次,如果该闭包修改了其引用的外部变量,则每一次调用该闭包对该外部变量都有影响,因为闭包函数共享外部引用。

如果函数返回的闭包引用的是全局变量a,则多次调用该函数返回的多个闭包引用的都是同一个a。同理,调用一个闭包多次引用的也是同一个a。此时,如果闭包中修改了a值得逻辑,则每次闭包调用都会影响全局变量a的值。使用闭包是为了减少全局变量,所以闭包引用全局变量是非常不好的编程方式。

闭包的价值

闭包最初的目的是减少全局变量,在函数调用的过程中隐式地传递共享变量,有其有用的一面:但是这种隐秘的共享变量的方式带来的坏处是不够直接,不够清晰,除非是非常有价值的地方,一般不建议使用闭包。
对象是富有行为的数据,而闭包是附有数据的行为,类在定义时已经显示地集中定义了行为,但是闭包中的数据没有显示地集中声明的地方,这种数据和行为耦合的模型不是一种推荐的编程模型,闭包是一种锦上添花的编程方式,不是不可缺少的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值