预警:【你不知道的javascript】开头的文章,是用来总结书籍《你不知道的Javascript》中我不熟悉的知识,单纯的用来巩固学到的知识,和加深记忆。
可能有些地方我理解的不透彻,所以不能够保证内容的正确性,欢迎指正。
重点知识
存在闭包的情况
- 函数A返回一个函数B,B中使用了A中的变量,调用A时使用了这个变量,就是闭包的效果(函数B依旧持有对A作用域的引用,这个引用就叫做闭包)
- 所有的回调函数都有闭包,比如定时器,dom的事件监听函数
- 立即执行函数IIFE不是闭包,但是可以实现类似闭包的功能
- 模块模式
- 就是一个函数,返回一个对象(或者返回一个内部函数)
- 返回的对象本质是 模块的公共API
- 函数返回的数据,必须有闭包函数的对象才是真正的模块
- 可以对公共API进行重命名之后
- 模块机制
- 这里可以关联学习node的模块机制commonjs
- es6的模块机制
- 参考
经典例子/面试题
- for 循环 + var 变量+ setTimeout 的经典打印结果
- 使用IIFE可以解决1 的打印结果的问题
- 使用let 解决1 的打印结果的问题
- 块作用域和闭包联手便可天下无敌
- 实现单例模式
- 单例模式保证只有一个实例
- 补充学习设计模式的相关知识