最新要闻

广告

手机

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

家电

什么是闭包?

来源:博客园


(相关资料图)

目录
  • 引入闭包
  • 发现问题
  • 用汇编的来解释闭包

引入闭包

不知道什么是闭包,推荐去看看这个视频:

【python技巧060】形象理解闭包,玩转闭包https://www.bilibili.com/video/BV1Vx4y1u7YX/

闭包就是能把函数的内部私有信息传递出去的一种机制,并且必须是函数执行过才能传递出去,没有执行就不能,早期挺多编程语言都有闭包这种特性,后来的Java使用了类和私有变量来替代闭包,下面以JavaScript的闭包来举例 :

菜鸟教程——JavaScript 闭包参考:https://www.runoob.com/js/js-function-closures.html

function add() {    var counter = 0;    function plus() {counter += 1;}    plus();        return counter; }add();add();add(); // 输出: 3

发现问题

为什么是3呢?我的认知是,函数内部的变量在函数执行完后就会销毁,可为什么变成函数调用它之后,就能保存上次调用时的结果呢?

粗浅的解释:离开函数作用域时,只有变量的引用被“销毁”了。但由于函数参数默认值一直引用同一个对象,所以这个列表永远不会被销毁,它的状态也会一直保存到下一次函数调用。感觉就是用问题回答了问题。 - -。

用汇编的来解释闭包

从汇编角度理解 Golang 多值返回和闭包https://toutiao.io/posts/m781m5/preview

缺乏对汇编和编译层的理解,只能断在这里了。希望后面能补上这些盲区。TODO2023.1.24 Mysticbinary 北京

关键词: 函数调用 传递出去 感觉就是