PHP函数带有两个括号:calc(1)(2)

时间:2018-09-21 19:18:18

标签: javascript php

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还是我做错了什么?

1 个答案:

答案 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; 
    };
}