static变量与js闭包

我与影子孤独终老i 提交于 2019-12-20 19:49:00

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

0、一句话定义闭包,子函数可以定义父函数的局部变量

1、几个关键字

    define         定义宏(C语言),定义常量(php)

    static          定义相当于位置在函数内的全局变量(生命周期与函数定义域无关),但只对函数可见,函数可改变其值

    const           定义常量(PHP 5.3.0+)

2、php使用静态变量:

<?php

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

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

3、js使用闭包

    function f1(){
        var n=0;

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

        return f2;
    }


  var add=f1();
  add();//输出 1
  add();//输出 2
  
  //闭包两大特点:1、访问局部变量,2、一直保存在内存中

4、个人js闭包的理解,欢迎斧正

    1、由于js没法像一般语言C++,PHP等使用static达到函数内全局变量的效果,故使用闭包的一直保存在内存的特性达到了这个效果,如上面php和js代码的效果

    2、闭包的特点使函数拥有了类的感觉,访问局部变量好比访问私有属性,闭包相当于类的公共函数,调用外部函数好比类实例化,始终保持在内存中好比类具有全局的生命周期,bigger感觉瞬间提高了。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!