你不知道的js第五章笔记

作用域闭包

首先是闭包的定义:

当函数可以记住并访问所在的词法作用域时,就产生了闭包,即使函数是在当前词法作用域之外执行。

无论使用何种方式对函数类型的值进行传递,当函数在别处被调用时都可以观察到闭包。

本质上无论何时何地,如果将(访问它们各自词法作用域的)函数当做第一级的值类型并到处传递,就会看到闭包在这些函数的应用。例如定时器、事件监听器、ajax请求、跨窗口通信等,只要使用了毁掉函数,实际上就是在使用闭包。

模块

模块模式需要具备两个必要条件:

  1. 必须有外部的封闭函数,该函数必须至少被调用一次(每次调用都会创建一个新的模块实例)
  2. 封闭函数必须返回至少一个内部函数,这样内部函数才能在私有作用域中形成闭包,并且可以访问或者修改私有的状态。

es6的模块没有“行内”格式,必须被定义在独立的文件中,即一个文件一个模块。

雯子 wechat
更多内容请关注我的公众号-雯子推