闭包 (closure)详细解释(一)

您所在的位置:网站首页 数学closure 闭包 (closure)详细解释(一)

闭包 (closure)详细解释(一)

2023-09-28 01:42| 来源: 网络整理| 查看: 265

1.1. 定义

在A函数中定义一个B函数(函数的嵌套定义),在B函数中使用了A函数中的变量,就会产生闭包。具体来说,就是B就是一个闭包。

 注意:

1.嵌套定义

2.引用变量

 1.2. 用debuuger去观察闭包

 

如果没有变量引用,则也不会看到闭包。

1.3. 闭包的作用是什么?

延长变量生命周期。

 上面的代码中,闭包B会延长变量i的生命周期,它有能力可以让i活的更久一些。这里的i 是A的局部变量,它正常的生命周期是函数A的调用过程。

 在调用A的过程中,由于i是它的局部变量,所以A会向内存申请一个空间来放i,但当A调用结束后,这个空间会回收,即i就死了。

 闭包B的能力就是可以让函数A()执行完成之后,i仍然活着!!!!

 实现这个能力还需要有一个帮手:return !

 见如下代码:

 1.4. 示例:延长i的生命周期

 

可以看到,每次调用r(),都可以对i的值进行++,再输出来。这就说明,A()调用之后,i 并没有死掉了,它还活着。

 原因如下: 

还没有开始调用A()

 

接下来,开始调用A()

A函数内部,有两个局部变量:

Ø i,

Ø B 它还是引用类型的。要用到堆区

所以A会去申请空间

 

 

 

接下来,执行return B

 

 

 

结果如下:

 

由于在B的函数体中用到变量i ,所以i的空间不能被回收。即i的生命周期被延长了。

 

再次观察调试面板:

 

 1.5. 理解延长变量的生命周期

 由于在函数B的内部它用到它外部的变量i,在这个函数B没有死掉之前,i是不会消失的。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3