static變量與js閉包

0、一句話定義閉包,子函數能夠定義父函數的局部變量php

一、幾個關鍵字閉包

    define         定義宏(C語言),定義常量(php)函數

    static          定義至關於位置在函數內的全局變量(生命週期與函數定義域無關),但只對函數可見,函數可改變其值
spa

    const           定義常量(PHP 5.3.0+)code

二、php使用靜態變量:
生命週期

<?php

function add(){
    static $n = 0;
    $n++;
    echo $n . '<br />';
}

add();//輸出 1
add();//輸出 2

三、js使用閉包內存

    function f1(){
        var n=0;

        function f2(){
            n++;
            console.log(n);
        }

        return f2;
    }


  var add=f1();
  add();//輸出 1
  add();//輸出 2
  
  //閉包兩大特色:一、訪問局部變量,二、一直保存在內存中

四、我的js閉包的理解,歡迎斧正io

    一、因爲js無法像通常語言C++,PHP等使用static達到函數內全局變量的效果,故使用閉包的一直保存在內存的特性達到了這個效果,如上面php和js代碼的效果
console

    二、閉包的特色使函數擁有了類的感受,訪問局部變量比如訪問私有屬性,閉包至關於類的公共函數,調用外部函數比如類實例化,始終保持在內存中比如類具備全局的生命週期,bigger感受瞬間提升了。
function

相關文章
相關標籤/搜索