Mysticbinary

What is Closure(闭包)?

Reference

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

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

Closure Concept

闭包就是能把函数的内部私有信息传递出去的一种机制,并且必须是函数执行过才能传递出去,没有执行就不能,早期挺多编程语言都有闭包这种特性,后来的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

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

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

用汇编的来解释闭包

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

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

posted on 2023-01-24 23:34  Mysticbinary  阅读(42)  评论(0编辑  收藏  举报

导航