$name = function(){
$a="x";
$name2=function() use ($a){
return "我喜欢吃".$a;
};
return $name2;
};
echo $name()();//请问这里为什么要写两个括号才能输出?
5 回答
汪汪一只猫
TA贡献1898条经验 获得超8个赞
调用$name
这个闭包函数需要使用$name()
,这个是没有疑问的。
但是$name()
返回的值是什么呢?返回的是$name2
,而$name2
是一个闭包函数,而调用$name2
则需要使用$name2()
。
所以echo $name()()
就等同于:
$tmp = $name(); // $tmp === $name2
$tmp();
牧羊人nacy
TA贡献1862条经验 获得超7个赞
函数也是一种值、一种对象来考虑,就像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;
- 5 回答
- 0 关注
- 375 浏览
添加回答
举报
0/150
提交
取消