溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PHP 閉包函數 Closures 匿名函數

發布時間:2020-06-01 09:39:26 來源:網絡 閱讀:425 作者:津沙港灣 欄目:web開發
/*
 * 匿名函數 
 * 閉包函數(closures)
 * 依靠匿名函數實現閉包
 * 子函數可以使用父函數中的局部變量,這種行為就叫做閉包
 * 連接閉包和外界變量的關鍵字 use
 * 閉包的兩個特點
 * 1.作為一個函數變量的一個引用,當函數返回時,其處于激活狀態。
 * 2.一個閉包就是當一個函數返回時,一個沒有釋放資源的棧區。
 * 閉包函數返回時,該函數內部變量處于激活狀態,函數在棧區依然保留。
 * 
 * 總結
 * 1.閉包外層是個函數
 * 2.閉包內部都有函數
 * 3.閉包會return內部函數
 * 4.閉包返回的函數內部不能有return(不然就真的結束了)
 * 5.執行閉包后,閉包內部變量會存在,而閉包內部函數的內部變量不會存在。
 * 
 * 閉包的應用場景
 * 1.保護函數內的變量安全,外層函數中變量只有內部函數才能訪問,而無法通過其他途徑訪問到,因此保護了外層函數中變量的安全性。
 * 2.在內存中維持一個變量。閉包,返回內部函數,用到了外層函數中的變量,所以外層函數中的變量一直存在于內存中。因此每次執行,都會使用到。
 * 
 */
 $var = function ($a,$b){
     echo '我是匿名函數<br/>';
     return $a+$b;
 };//匿名函數一定要加分號
 echo $var(1,2);
var_dump($var);//object(Closure)[1] 對象  內置類Closure的一個實例  即對象

function one(){
    echo '1<br/>';
    function two(){
        echo '2<br/>';
    }
    function three(){
        echo '3<br/>';
    }    
    two();
}
one();

function demo(){
    $a = 10;
    $b = 20;
    $one = function ($param) use (&$a,$b) {//用use使用外部變量$a,$b  利用&引用 改變$a的值
       echo $param."<br/>" ;
       $a++;
       echo $a."<br/>";
       echo $b."<br/>";
       
    };
 //    $one('hello world');
 //    echo $a;
 return $one;
}

$var = demo();

$var ('yangsir');//$a變量沒有被釋放  11
$var ('wangsir');//$a變量沒有被釋放 12

function test($fun){
    echo $fun();
}

test(function(){
    return '我是匿名函數進行傳參數';
});


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女