JavaScript闭包
徐徐 抱歉选手

参考

JavaScript经典基础知识点精讲之闭包

我还是想谈谈JS里面的闭包

对闭包的理解

  • 闭包就是绑定了上下文环境的函数
  • 包是一个函数和声明该函数的词法环境的组合
  • 闭包就是一个能够访问它被定义时所处的作用域环境的函数
  • 闭包将函数内部和函数外部连接起来的一座桥梁

闭包是一个函数,这个函数能够暴露和他处在同一执行上下文execution context的其他任何内容。至于暴露给谁,暴露在哪,看闭包在哪里被调用。

为什么闭包能够暴露?因为作用域链的向上搜寻的能力。如果在当前执行环境中搜寻不到某个变量名/函数名,作用域链会允许JavaScript解释器不停的向上回溯。

闭包如何暴露?在 JS 里面,最常见的闭包形式是在一个函数里面嵌套另一个函数,另一个函数持有父作用域里面定义的变量;但产生闭包不一定非要函数内部return某个函数。return一个函数只是为了我们能在函数外部去访问到return的函数内部的变量。

闭包有如何性质?每一次对闭包(函数)的调用都会创建不同的闭包环境。同一个调用函数生成同一个闭包环境,在里面声明的所有函数同时具有这个环境里面自由变量的引用。

闭包有和作用?能够实现私有变量、特权变量等。

  • 本文标题:JavaScript闭包
  • 本文作者:徐徐
  • 创建时间:2021-01-12 15:19:26
  • 本文链接:https://machacroissant.github.io/2021/01/12/js-closure/
  • 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
 评论