你并不了解 JavaScript:作用域与闭包 - 第二版
目录
- 前言
- 序
- 第一章:什么是作用域?
- 关于本书
- 编译型与解释型
- 编译代码
- 编译器说
- 取巧:修改运行时的作用域
- 词法作用域
- 第二章:图解作用域词法
- 弹珠、水桶和气泡……哦,我的老伙计!
- 朋友之间的对话
- 作用域嵌套
- 未完待续
- 第三章:作用域链
- 「查找」(大部分)是概念性的
- 遮蔽 (Shadowing)
- 函数名的作用域
- 箭头函数
- 思维转换
- 第四章:全局作用域
- 为什么是全局作用域?
- 全局作用域具体范围是什么?
- Global This
- 掌握全局作用域
- 第五章:(并不)神秘的变量生命周期
- 何时使用变量?
- 变量提升:另一种隐喻
- 重复声明?
- 未初始化变量警告(又称 TDZ 暂时性死区)
- 终于初始化
- 第六章:限制作用域的过度暴露
- 最少暴露
- 隐藏在普通(函数)作用域内
- 块的作用域
- 块中的声明函数
- 刀过竹解
- 第七章:闭包的使用
- 来看看闭包
- 闭包生命周期和垃圾回收(GC)
- 为什么是闭包?
- 一种替代观点
- 完美谢幕
- 第八章:模块化模式
- 封装和最小暴露 (POLE)
- 什么是模块?
- Node CommonJS 模块
- 现代 ES 模块 (ESM)
- 周天圆满
- 附录 A:欲穷千里目,更上一层楼
- 隐式作用域
- 匿名函数与具名函数
- 提升:函数和变量
- 使用
var
的理由 - TDZ 是怎么回事?
- 同步回调还是闭包吗?
- 类模块的变体
- 附录 B:练习
- 弹珠桶
- 闭包(第一部分)
- 闭包(第二部分)
- 闭包(第三部分)
- 模块
- 参考答案