您如何向知道其所包含概念的人(例如函数,变量等)解释JavaScript闭包,但不了解闭包本身?
我已经看过维基百科上给出的Scheme示例,但遗憾的是它并没有帮助.
我一直在阅读PHP 5.3的新功能,其中一个主要功能是闭包.
除非我非常错误,否则PHP开发人员要么:
a)使用匿名函数来混淆闭包
b)在我测试的PHP 5.3.1中,闭包被破坏了
从维基百科所说的闭包是匿名函数的机制加上函数的父范围变量与函数范围的绑定.最后一部分似乎在PHP中被打破了.
我已经检查了PHP错误,并没有发现任何关于这个,奇怪的是.
这是我正在测试的方式:
<?php
function getFun() {
$x = 2;
return function() {
return $x;
};
}
$f = getFun(); // getFun()(); doesn't work -.-
var_dump($f()); // $f() == null
Run Code Online (Sandbox Code Playgroud)
在实际实现闭包的语言中,它返回2:
def f():
x = 2
return lambda: x
print(f()()) # prints 2
Run Code Online (Sandbox Code Playgroud)
和
alert((function() {
var x = 2;
return function() {
return x;
};
})()()); // alerts 2
Run Code Online (Sandbox Code Playgroud)
那么,我错了还是?