$name = function(){
$a="x";
$name2=function() use ($a){
return "我喜欢吃".$a;
};
return $name2;
};
echo $name()();//请问这里为什么要写两个括号才能输出?
$name = function(){
$a="x";
$name2=function() use ($a){
return "我喜欢吃".$a;
};
return $name2;
};
echo $name()();//请问这里为什么要写两个括号才能输出?
函数也是一种值、一种对象来考虑,就像123、1.341、"str",这没什么难的。
$name是一个函数:
function(){
$a="x";
$name2=function() use ($a){
return "我喜欢吃".$a;
};
return $name2;
};
$name()是此函数(以上函数)$name的返回值(也就是这个内部返回的函数$name2):
function() use ($a){
return "我喜欢吃".$a;
};
$name()()也就是调用内部的$name2对应函数,结果当然是这个语句的返回值return "我喜欢吃".$a;
1 回答4k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
2 回答2.2k 阅读✓ 已解决
2 回答2.2k 阅读
1 回答1.4k 阅读✓ 已解决
786 阅读
637 阅读
调用
$name
这个闭包函数需要使用$name()
,这个是没有疑问的。但是
$name()
返回的值是什么呢?返回的是$name2
,而$name2
是一个闭包函数,而调用$name2
则需要使用$name2()
。所以
echo $name()()
就等同于: