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

相关文章
相关标签/搜索