JavaScript 学习路线:从基础到运行机制
这是一条可以从头读到尾的知识学习路线。先建立语法与值的认识,再学习函数、集合、对象和异步,最后把语言放回浏览器与运行机制中理解。每一节直接通往对应笔记;章节标题进入该章概览。
阅读起点
第一次学习编程,从第一章的运行与语法开始。前七章的语言例子主要使用 Node 的 .mjs 文件,先把注意力放在代码与输出上。第八章需要基本 HTML 知识,并明确标注浏览器运行方式。已有经验者可以按目录定位专题,再回到它依赖的前置章节。
本书按知识依赖学习 ES6+ 与既有语言机制;第十章另设旧项目维护和版本演进专题。截至 2026-09-15,已发布年度标准为 ECMAScript 2026,Stage 4 与运行时支持另行说明。基础例子保留 Node 22.21.0 环境,当前能力与 Temporal 使用独立 Node 26.0.0 实验;浏览器 API 不会自动出现在 Node 中。
全书顺序
全书按十章组织,各章提供概览与专题讲解。小案例用来观察语言行为,练习用来检验理解。
第一章|值、表达式与控制流
从运行第一段代码开始,理解值、声明、分支、循环、转换与数值精度。
第二章|函数、作用域与调用方式
理解函数如何接收输入、返回结果、捕获变量,以及调用方式怎样影响 this。
第三章|对象、集合与文本数据
掌握对象与集合,再细分字符串、正则、日期、国际化和数据复制。
- 对象:属性、解构与枚举
- 数组:顺序、转换、查找与完整方法地图
- Map、Set 与弱集合:按数据关系选择容器
- 字符串与 Unicode:字符不总等于一个位置
- 正则表达式:模式、捕获、状态与回溯
- 日期与国际化:时间点、日历和显示格式
- JSON 与复制:保存数据时会丢掉什么
第四章|对象模型
解释属性查找、原型、类、描述符、Symbol、Proxy 与 Reflect。
第五章|异步与事件循环
从回调进入 Promise 和事件循环,学习等待、并发、取消与调度。
第六章|迭代、数据流与二进制
把逐项消费延伸到生成器、异步迭代、数据流和二进制内存。
第七章|模块、运行环境与测试入口
理解模块加载与绑定、运行环境、兼容方式和可重复的代码验证。
第八章|浏览器平台与页面状态
学习 DOM、事件、表单、网络、存储、观察器、Worker 与组件化平台能力。
- DOM、事件与表单:把页面当作一棵会响应的树
- Fetch、取消与竞态:请求成功不等于结果可用
- 存储、URL 与历史:哪些状态应该留到下一次
- 页面生命周期与观察器:等待变化,而不是不停猜测
- Worker 与消息:把工作移走,也把边界说清
- Web Components:定义元素、封装结构、开放事件
- 文件与实时通信:字节、预览和持续到来的消息
第九章|错误、安全与资源管理
定位错误、理解信任边界与性能成本,管理内存和外部资源的生命周期。
第十章|执行机制与语言演进
把执行上下文与引擎实现串起来,并学习现代协议、时间模型和规范阅读。
- 执行上下文:把作用域、调用栈与宿主接起来
- 引擎怎样加速代码:形状、反馈与去优化
- 现代能力补充:惰性迭代、分组与资源释放
- 时间模型与新特性:从 Date 走向 Temporal
- 读懂规范与旧代码:抽象操作、eval 和兼容边界
- 旧项目维护:从全局脚本、构造函数到模块边界
- 语言演进:从 ES6 基础到当前标准能力
深入阅读
从“算出了什么”追到“为什么这样算”
同一个运算符为什么会得到不同类型的结果?从隐式转换开始,再通过精度与 BigInt认识数值表示的限制。函数部分则沿着闭包、调用规则与递归边界继续追问:变量从哪里来,接收者由谁决定,调用何时结束。
对象的细节集中在第四章。属性描述符解释属性能否改写,私有字段说明实例内部状态的访问边界,代理不变量讨论拦截操作时仍须遵守的规则。
看清数据在表示与转换中发生的变化
字符串的位置、肉眼看到的字符和底层编码如何对应,可以从Unicode读起。接着用正则与回溯理解匹配过程,用时区与国际化区分保存的时间与显示的时间。
当数据需要跨越边界时,继续读复制边界与二进制与共享内存:哪些内容能够复制,哪些只是共享同一份状态,以及字节应当如何解释。
跟踪等待、取消与数据流的整个过程
理解 Promise 之后,可以用thenable检验自己对异步接纳过程的认识,再学习取消与有界并发。关注的不只是任务何时开始,还包括停止后由谁清理、同时允许多少任务运行。
这条线继续连接到迭代关闭与背压:提前结束消费时如何收尾,生产速度超过消费速度时如何协调。
把程序放回真实的运行环境
文件之间的关系从循环模块展开,代码何时运行则需要结合脚本加载与兼容理解。进入浏览器后,通过页面生命周期和Worker观察页面状态、线程与消息的边界,再用弱引用与泄漏检查资源是否真正得到释放。
连接语言规则、引擎实现与新能力
最后回到执行环境,把前面学过的作用域、调用和宿主行为串起来。引擎优化帮助区分语言保证与实现选择;资源协议和Temporal展示新的语言能力如何处理资源与时间问题。需要确认精确行为时,沿规范阅读找到规则的定义。
在旧项目与当前标准之间保留行为
维护旧脚本先补齐第二章的作用域与闭包、第四章的原型、第五章的回调错误和第七章的模块环境,再进入旧项目维护。沿着命名空间、IIFE、构造继承和 CommonJS 缓存完成原格式中的修改,再比较 ESM 与类的变化。
ES6+ 的共同基础继续沿主线学习;语言演进把版本、提案状态与实际环境分开,并展开 Map 默认值、JSON 原文、迭代拼接与字节转换。现代资源协议和 Temporal 时间模型提供独立运行环境,遇到旧环境不支持时也有明确的学习入口。