js闭包

2018-09-05  本文已影响0人  码农农民的农

闭包的定义

    闭包就是能够读取其他函数内部变量的函数

闭包的特性

    封闭性:外界无法访问闭包内部的数据,如果在闭包内声明变量,外界是无法访问的,除非闭包主动向外界提供访问接口;

    持久性:一般的函数,调用完毕之后,系统自动注销函数,而对于闭包来说,在外部函数被调用之后,闭包结构依然保存在。

闭包的优缺点

    缺点:由于闭包携带包含它函数的作用域,因此比其他函数占用的内存更多。

    优点:减少创建全局变量 减少传递给函数的参数量 封闭性

闭包有如下应用特征:

      1.局部变量:在函数中定义有共享意义的局部变量(定义成全局变量会造成全局污染);

     2.内嵌函数:在函数中申明有内嵌函数,内嵌函数对函数中的局部变量进行访问;

     3.外部使用:函数向外返回此内嵌函数,外部可通过此内嵌函数持有并访问申明在函数中的局部变量,而此变量在外部是通过其他路径无法访问的;

闭包的结构

    function a(){

        var value = 1; // 局部变量

        function b(){  //内嵌函数

            alert(value );

        }

        return b;  // 返回内嵌函数

    }

    var c = a();

    c(); // 外部使用

    根据定义a函数里面的b函数叫闭包,但是要获取到这个b函数 就必须在a函数里面返回b函数。

    上面c函数指向的就是这个b函数。

    调用c函数就可以弹出a函数里面的局部变量value的值。

上一篇 下一篇

猜你喜欢

热点阅读