序章
ES6+:从语言特性到运行时行为,重新理解现代 JavaScript 的根基
第一阶段:重新理解 ES6 的本质
- ES6(ECMAScript 2015)不是一次功能更新,而是一次语言范式的跃迁 /ES6/Part01.md 标志着 JavaScript 进入模块化、强作用域、异步编程的新时代
- 三大变革:作用域机制重构、异步流程控制、元数据操作能力 /ES6/Part02.md
let/const→Promise→Proxy - 为何说 ES6 是 TypeScript 的基石? /ES6/Part03.md 没有
class、module、arrow function,TS 的类型系统将无处依附 - Babel 的角色:语法转换器 vs 运行时补丁(polyfill) /ES6/Part04.md 哪些特性可转译?哪些必须依赖
core-js? - V8 引擎优化:
hidden class与inline caching如何因 ES6 改变? /ES6/Part05.md
第二阶段:深入变量声明与作用域革命
var的函数作用域缺陷:变量提升(hoisting)如何导致逻辑错误?for(var i=0;...中闭包捕获的是最终值let与const的块级作用域原理:词法环境(Lexical Environment)栈的实现{}内部创建新环境记录(Environment Record)- 临时死区(Temporal Dead Zone)的本质:TDZ 是语法限制还是引擎行为?
console.log(a); let a = 1;抛出ReferenceError的底层检查机制 for (let ...)的特殊处理:每次迭代创建独立词法环境
解决闭包陷阱的根本原因const的不可变性边界:引用不变 vs 值不变const obj = {}; obj.name = 'John';为何合法?
第三阶段:穿透函数与异步抽象
- 箭头函数的
this绑定机制:词法继承而非动态绑定this来自外层最近的非箭头函数或全局环境 - 没有
arguments、prototype、不能用作构造函数的原因
箭头函数是表达式而非完整函数对象 Promise的状态机模型:pending → fulfilled/rejected 的不可逆转换
状态变迁由resolve/reject函数触发- microtask queue 与事件循环:
Promise.then()为何比setTimeout先执行?
DOM 操作后立即响应的实现基础 async/await的本质:基于 Promise 的语法糖,生成器(Generator)的现代替代await将异步代码“线性化”的编译原理
第四阶段:掌握对象与数据结构进化
- 解构赋值的模式匹配语义:数组与对象的“反向构造”
const [a, b] = arr;背后的[[Get]]与[[Set]]操作 - 默认参数与剩余参数:调用栈中的参数初始化逻辑
默认值表达式在函数调用时求值 - 增强对象字面量:方法简写、属性名表达式、
super调用{ method() {} }如何设置原型链上的函数 Symbol类型的设计目的:创建唯一键,避免属性名冲突Object.getOwnPropertySymbols()与Symbol.for()Map与Set的优势:任意类型键、有序遍历、性能优化场景
对比普通对象与数组的局限性
第五阶段:生产环境高频实战
- 模块化机制:
import/export的静态分析特性与 Tree Shaking
为何import { foo } from 'mod'可以摇掉未使用代码? class语法糖背后的原型链操作:extends如何实现继承?__proto__与[[Prototype]]的链接过程getter/setter与属性描述符:Object.defineProperty的现代写法
实现响应式系统的基础WeakMap/WeakSet:弱引用与内存泄漏防护
适合存储私有数据或缓存映射for...of与可迭代协议:Symbol.iterator如何统一遍历逻辑?
数组、字符串、Map、Set 的统一接口
第六阶段:与现代框架和全栈架构衔接
- ES6+ 是 Vue3 Composition API 的基石
ref、reactive依赖Proxy;setup函数使用let/const/import - React Hooks 与闭包:
useState依赖函数组件的每次执行形成新闭包let的块级作用域确保状态隔离 - NestJS 的
class+ 装饰器模式完全建立在 ES6+ 之上@Controller()、@Get()依赖reflect-metadata - Bun 如何利用 ES6 Module 加速启动?原生 ESM 支持避免 CommonJS 包装开销
- Tree Shaking 在 Vite/Bun 构建中的极致发挥:静态导入分析如何消除死代码?
第七阶段:未来趋势与深度集成
- ES2022+ 新特性前瞻:
top-level await、class fields、logical assignment
这些特性如何进一步简化异步逻辑与状态管理? - 装饰器(Decorators)的复兴:Stage 3 提案对 NestJS、MobX 的影响
元编程能力的标准化 - Records & Tuples 提案:不可变数据结构的原生支持
对 Redux、Immer 等库的潜在冲击 - Pipeline Operator (
|>):函数式编程在 JS 中的落地可能
与 FP 库(如 Ramda)的协作 - ES6+ 如何为 WASM + JS 混合开发提供桥梁?模块系统与类型互操作