开发者社区> 问答> 正文

什么是闭包?

已解决

什么是闭包?

展开
收起
pandacats 2019-12-10 10:46:30 530 0
1 条回答
写回答
取消 提交回答
  • 采纳回答

    概念

    闭包是一个过程,它记住了声明scope下的变量,在别的scope下,调用函数时 ,依然可以读取到这些变量。

    原理分析

    function outer(){
    
    let n = 1;
    
    function inner(){
    
      console.log(n);
    
    }
    
    return inner;
    
    }
    
    const fn = outer();
    
    fn();
    

    以上案例,提出来的问题是:outer执行结束之后,函数空间消亡了,inner的n为什么还有值?原理是什么?

    在我的理解里,闭包可以想象成一个胶囊(persistent lexical scope data \ back pack),包裹住了变量n粘在函数inner上,一起返回给了fn,在memory中开辟一个存储空间放置这个胶囊。如果代码中有fn在执行,它会一直访问这个胶囊里的n值。什么时候不再有fn了,什么时候这个胶囊脱落掉消亡。

    用途

    两个用途:不污染global的变量池和变量值的暂存

    2019-12-10 10:47:17
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
函数对象 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载