$name = function(){
$a="x";
$name2=function() use ($a){
return "我喜歡吃".$a;
};
return $name2;
};
echo $name()();//請問這里為什么要寫兩個括號才能輸出?
5 回答

汪汪一只貓
TA貢獻1898條經(jīng)驗 獲得超8個贊
調用$name
這個閉包函數(shù)需要使用$name()
,這個是沒有疑問的。
但是$name()
返回的值是什么呢?返回的是$name2
,而$name2
是一個閉包函數(shù),而調用$name2
則需要使用$name2()
。
所以echo $name()()
就等同于:
$tmp = $name(); // $tmp === $name2
$tmp();

牧羊人nacy
TA貢獻1862條經(jīng)驗 獲得超7個贊
函數(shù)也是一種值、一種對象來考慮,就像123、1.341、"str",這沒什么難的。
$name是一個函數(shù):
function(){
$a="x";
$name2=function() use ($a){
return "我喜歡吃".$a;
};
return $name2;
};
$name()是此函數(shù)(以上函數(shù))$name的返回值(也就是這個內部返回的函數(shù)$name2):
function() use ($a){
return "我喜歡吃".$a;
};
$name()()也就是調用內部的$name2對應函數(shù),結果當然是這個語句的返回值return "我喜歡吃".$a;
- 5 回答
- 0 關注
- 408 瀏覽
添加回答
舉報
0/150
提交
取消