结合闭包我经常读东西关闭在以外别的东西作为解释闭包的方法。“结束”是什么意思?
现在我对理解闭包没有太大困难,但“闭幕”似乎是一个更基本的概念。否则,人们不会提及它来解释闭包,是不是?
什么是关闭了确切定义,什么是东西和别的?这个词来自哪里?
结合闭包我经常读东西关闭在以外别的东西作为解释闭包的方法。“结束”是什么意思?
现在我对理解闭包没有太大困难,但“闭幕”似乎是一个更基本的概念。否则,人们不会提及它来解释闭包,是不是?
什么是关闭了确切定义,什么是东西和别的?这个词来自哪里?
考虑:
something closes over something else
|_______| |_________| |____________|
| | |
subject verb object
这里:
考虑一个简单的函数:
function add(x) {
return function closure(y) {
return x + y;
};
}
这里:
add
的功能只有一个变量,变量名为x
,因为它是内部的定义是不自由变量范围为add
本身。closure
该函数有两个变量,命名为x
和y
,外面x
是因为它是在add
(未closure
)和y
范围限定的自由变量不是自由变量,因为它是在所定义的范围closure
本身。因此,在第二种情况下命名closure
的功能是“接近过”命名x
可变说。
因此:
closure
功能被认为是命名x
可变的封闭。x
的变量被称为是名为closure
的函数的最高值。这就是它的全部。
(1)所有这些可以用几句话来说:*“A关闭B”==“ B是A的自由变量“,其中自由变量是出现在函数体内,但不出现在其签名中的那些变量*(2)答案不直观地表示可视化的内容以及为什么术语”关闭“(和“封闭”)被选中。这是由于语义(做了些什么?或者变得更加接近?),还是被选择来使讨论听起来更加深刻和神秘? – 2016-05-02 04:04:48
随意写你自己的答案。 – 2016-05-02 04:14:21
它通常意味着“添加添加元素到一个集合,然后*更多*” - *更多*部分应该确保集合的属性保持有效 - 在这种情况下,它是您获得您的值的环境从 - 你添加那些,你可能需要的所有东西,你在lambda中使用它 - 这是关闭 – Carsten 2015-05-02 11:56:00