「注解」《你不知道的JavaScript(上卷)》第五章:作用域闭包

启示

  • 理解闭包可以看做是某种意义上的重生。
  • 掌握闭包将会功力大增。
  • JavaScript中闭包无处不在。

实质问题

图片[1]-「注解」《你不知道的JavaScript(上卷)》第五章:作用域闭包-一一网

  • 闭包使得函数可以继续访问定义时的词法作用域。
    图片[2]-「注解」《你不知道的JavaScript(上卷)》第五章:作用域闭包-一一网

现在我懂了

图片[3]-「注解」《你不知道的JavaScript(上卷)》第五章:作用域闭包-一一网
图片[4]-「注解」《你不知道的JavaScript(上卷)》第五章:作用域闭包-一一网

循环和闭包

  • 在看懂for循环中的闭包问题时,我们首先要知道一点,那就是延迟函数的回调通常是在循环结束的时候才执行,即使setTimeout的第二个参数是0.
  • 所以下面的循环回输出5个6
    图片[5]-「注解」《你不知道的JavaScript(上卷)》第五章:作用域闭包-一一网
  • 尝试通过立即执行函数来解决这个问题
  • 尝试1
  • 尝试2
    图片[6]-「注解」《你不知道的JavaScript(上卷)》第五章:作用域闭包-一一网

重返块作用域

图片[7]-「注解」《你不知道的JavaScript(上卷)》第五章:作用域闭包-一一网

模块

  • 模块模式要具备两个必要条件
  • 通过模块模式可以构造一个API对象

现代的模块机制

  • 本小节主要讲了模块define的源码,不做深入讨论。

未来的模块机制

小结

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享