美文网首页
js中的闭包

js中的闭包

作者: jadefan | 来源:发表于2019-10-14 22:56 被阅读0次

    闭包是指有权访问另一个函数作用域中的变量的函数

    一般情况下,在函数外部是无法访问内部变量的,因为内部变量在函数执行完成后就会销毁,也就是内部变量的生命周期结束。但是如果有闭包存在,便可实现在外部访问函数作用域中的变量。

        var age=0;
        function Person() {
          var age = 10;  
          console.log(age);
        }
        Person();  //10
        age++;
        console.log(age);  //1
        age++;
        console.log(age);  //2
        Person();  //10
    

    能够验证出,在函数外部无法改变内部的age

        var age=0;
        function Person() {
          var age = 0; 
          function grow() {
            age++;
            console.log(age);
            console.log(this.age);
          } 
          return grow;
        }
    
        var timepass = Person();
        timepass();  //1 0 
        timepass();  //2 0
        timepass();  //3 0
        timepass();  //4 0
    

    可以看到随着时间的流逝,函数内部的age在递增,全局的age并没有增加,也就是在执行grow()函数时,this对象是window,但还是可以访问到函数Person()函数内的age,两者互不影响

    相关文章

      网友评论

          本文标题:js中的闭包

          本文链接:https://www.haomeiwen.com/subject/lsgdmctx.html