回顾闭包

闭包是函数和声明该函数的词法环境的组合。MDN上做了很详细的说明:闭包
在这总结一下自己的理解

要理解闭包就要先了解js的词法作用域,词法作用域意味着作用域是由书写代码时函数声明的位置来决定的。当一个块或函数嵌套在另一个块或函数中时, 就发生了作用域的嵌套。 因此, 在当前作用域中无法找到某个变量时, 引擎就会在外层嵌套的作用域中继续查找, 直到找到该变量,或抵达最外层的作用域( 也就是全局作用域) 为止。

闭包的应用:

  • 将函数与其所操作的某些数据(环境)关联起来;即为Dom元素绑定回调函数;
  • 闭包模拟私有方法,即模块模式内,由于闭包的存在,声明的变量和方法只在该模式内部可用。但在返回对象上定义的变量和方法,则对外部使用者都是可用的。多个公共函数可共享一个词法作用域;
  • 因为多个闭包会共享同一词法作用域;在for循环中绑定事件的时候我们肯定不希望这样,可使用let声明变量或函数工厂或匿名闭包,,为每一个回调创建一个新的词法环境来解决。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容