js中的闭包

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

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

    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,两者互不影响

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 在上一篇文章“执行环境和作用域”中,我试着梳理了执行环境和作用域的关系。但实际上,文章中并没有提到作用域,而是介绍...
    海痕阅读 277评论 0 0
  • 首先,js闭包对于哪怕是有很多年前端开发经验的人,也是很晦涩难懂的东西. 所以,我不敢保证能把你说明白,但是如果你...
    火锅伯南克阅读 503评论 0 1
  • 其实这两个我也看了好多遍了但总是记不住!好气哦但还是要保持学习的心态,所以今天手写理一遍,希望不会忘得一干二净。 ...
    大写的Q阅读 359评论 0 0
  • 转载,文/SpikeKing(简书作者) 原文链接:分析应用使用的技术框架和开源库 使用ClassyShark工具...
    jackLee阅读 249评论 0 0
  • 5月20号这天一大早,同事老王给我发了个520的大红包。 我一下子愣住了。 老王什么时候开始喜欢我的? 怪不得他最...
    桃小毛阅读 3,631评论 49 42

友情链接更多精彩内容