zoukankan      html  css  js  c++  java
  • js闭包

    1.什么是闭包
    在js中,函数外部访问不了函数内部变量,函数内部可以访问外部函数变量。
    可以访问另一函数作用域变量的函数都是闭包。

    2.示例一:

    function a(){
        var n=0;
        function inc(){
            n++;
            console.log(n);
        }
        inc();
        inc();
    }

    运行结果:

    1
    2

    inc可以访问外部变量n

    3.示例二:

    function a(){
        var n=0;
        this.inc=function(){
            n++;
            console.log(n);
        };
    }
    var c = new a();
    c.inc();
    c.inc();

    运行结果:

    1
    2

    4.示例三:

    function a(){
        var n=0;
        function inc(){
            n++;
            console.log(n);
        }
        return inc;
    }
    var c=a();
    c();
    c();

    运行结果:

    1
    2

    5.常见陷阱

    function func(){
        var result = new Array();
        for(var i=0;i<10;i++){
            result[i]=function(){
                return i;
            };
        }
        return result;
    }
    var funcs=func();
    console.log(funcs[0]());

    运行结果:

    10

    func()返回的是函数名数组,此时i=10;
    执行数组中函数 return i;所以返回10,而不是0

    6.闭包的缺点
    内部函数引用外边变量,会占用内存。不必要的闭包会造成内存消耗。

  • 相关阅读:
    cf 785#
    hdu 4920 Matrix multiplication
    poj 2443 Set Operation
    bzoj 3687: 简单题
    洛谷 三月月赛 C
    洛谷 三月月赛 B
    洛谷 三月月赛 A
    bzoj 3156: 防御准备
    bzoj 3437: 小P的牧场
    bzoj 3675: [Apio2014]序列分割
  • 原文地址:https://www.cnblogs.com/shijingjing07/p/7301655.html
Copyright © 2011-2022 走看看