JavaScript :
function calc(x) {
return function(y) {
return x + y;
};
}
console.log(calc(1)(2));
这将返回3
。
我使用 PHP 尝试了相同的操作:
function calc($x) {
return function($y) {
return $x + $y;
};
}
echo calc(1)(2);
这将返回2
。
我得到一个E_NOTICE:
E_NOTICE:类型8-未定义的变量:x-第4行
为什么变量x
未定义?是因为那不适用于PHP还是我做错了什么?
答案 0 :(得分:3)
这叫做闭包:
http://php.net/manual/en/class.closure.php
http://php.net/manual/en/functions.anonymous.php
function calc($x) {
return function($y) use($x){
return $x + $y;
};
}