
闭包和对象是一回事,都是封装数据,只不过闭包语法,主要应用于「头等函数」语言中,用来解决函数声明和执行时外部作用域出现变化产生的问题。
1 limao 2021-12-12 20:39:34 +08:00 |
2 35aZ4P8mT576683q 2021-12-13 00:49:35 +08:00 via Android 闭包封装并绑定了 this, 我觉得有点像 OOP 里的单例模式 |
3 AndyAO OP @liberty1900 #2 不是单例,闭包生成函数可以被重复调用。 当然,你也可以匿名它,生成器函数,用完就丢掉,这样倒是单例了。 实质上这两个功能就是等价的,因为已经被证明可以相互模拟。 只不过通常语法上不同,在不同的情景下使用起来方便性有区别。 |
4 iamzuoxinyu 2021-12-13 10:20:10 +08:00 写一个 lisp 解释器就能完全理解闭包这玩意了。 |
5 kidblg 2021-12-13 13:25:48 +08:00 |
6 yulii 2021-12-13 15:27:59 +08:00 SICP 第三章的模块化,里面提到的一个编程语言的抽象概念环境模型。看了这个就理解了。 |
7 aguesuka 2021-12-13 16:11:06 +08:00 我是这么认为的 闭包等价于对象 (Closures are equivalent to Objects) ("闭包 ~ 对象" 为真) 闭包和对象不是一回事 (Closures and Objects are not the same thing) ("闭包 ≡ 对象" 为假) |
8 julyclyde 2021-12-15 12:29:16 +08:00 闭包是“不洁”的函数 它的输入居然不是明确全部列出来的 |