搜尋

首頁  >  問答  >  主體

PHP 巢狀函數與匿名函數作用域問題

function a()
{
    $demi = '局部变量';
    b($demi);
}
function b($args)
{
    echo $args;
}
a();

PHP中的所有函數和類別都具有全域作用域,可以定義在一個函數之內而在之外調用,反之亦然。

為什麼函數b能夠透過傳參方式取得函數a的局部變數?

function tesxt()
{
    $var = 10;
    $echonumber = function($num) {
         echo $num;
    };
    $echonumber($var);
}
tesxt();

相同,匿名函數為什麼也是透過傳參方式來取得外部函數的變數?

phpcn_u1582phpcn_u15822776 天前630

全部回覆(1)我來回復

  • 高洛峰

    高洛峰2017-05-18 10:47:34

    其實是這樣的。當你呼叫函數的時候,你傳的參數其實是一個副本,值複製,相當於另外一個變量,沒有任何關係。
    同理匿名函數也是一樣的。但是你如果想要在匿名函數中使用外部變量,是無法存取的。

    回覆
    0
  • 取消回覆