B00 JavaScript 进阶
B00 JavaScript 进阶
本阶段目标:从「能跑」走到「能解释」——变量为什么在某个位置取不到、
this为什么指向别处、异步为什么没有按顺序执行。
所属:frontend/js / B-进阶 | 上一篇:A09-实战待办清单 | 下一篇:B01-作用域与闭包 | 返回:科目 README
路线图
九篇沿「变量在哪 → 调用者是谁 → 异步怎么排队 → 任务怎么调度 → 代码怎么拆 → 出错怎么查 → 集合怎么选 → 模式怎么匹配 → 事件怎么传播」推进。
flowchart TD
B1["B01 作用域与闭包"] --> B2["B02 this 与原型链"]
B2 --> B3["B03 Promise 与 async 异步"]
B3 --> B4["B04 事件循环与任务队列"]
B4 --> B5["B05 模块化与 ESM"]
B5 --> B6["B06 错误处理与调试"]
B6 --> B7["B07 Map 与 Set 集合类型"]
B7 --> B8["B08 正则表达式"]
B8 --> B9["B09 事件对象与自定义事件"]
subgraph P1["语言机制(B01 ~ B02)"]
B1
B2
end
subgraph P2["异步与组织(B03 ~ B06)"]
B3
B4
B5
B6
end
subgraph P3["常用能力(B07 ~ B09)"]
B7
B8
B9
end
图 1 进阶阶段路线图:B01 ~ B02 解释取值与绑定规则,B03 ~ B06 解决异步、调度、拆分与排错,B07 ~ B09 补齐集合、模式匹配与事件机制
能力对照
| 能力 | 对应篇目 | 自检方式 |
|---|---|---|
| 判断变量在何处可见 | B01 | 给定嵌套函数,能说出每个变量的查找路径 |
| 用闭包封装私有状态 | B01 | 写出不依赖全局变量的计数器 |
| 把多参数函数改写为柯里化形式 | B01 | 固定基础值后生成两个专用函数 |
解释 this 的实际指向 |
B02 | 写出四种调用形式下 this 分别是什么 |
把回调改写为 async/await |
B03 | 错误能被 try/catch 捕获,顺序符合预期 |
| 预测异步输出顺序 | B04 | 给定 setTimeout 与 Promise 混排,能写出完整输出 |
| 拆分长任务并给出三种做法 | B04 | 五千条数据处理期间页面仍可交互 |
| 把代码拆成可独立加载的模块 | B05 | 拆分后循环依赖消除,单文件不超过 200 行 |
| 定位并归类运行时错误 | B06 | 从堆栈第一行定位到具体文件与行号 |
在 Map 与对象之间做出选择 |
B07 | 能说明键类型、顺序与弱引用三个判断点 |
| 为输入校验写出可推导的正则 | B08 | 加首尾锚点、转义用户输入,无嵌套量词 |
| 用自定义事件解耦两个模块 | B09 | 组件对外只发事件,不暴露内部方法 |
阅读顺序
| 顺序 | 篇目 | 建议时长 | 必读 | 说明 |
|---|---|---|---|---|
| 1 | B01 作用域与闭包 | 60 分钟 | 是 | 取值规则是所有 bug 的底噪 |
| 2 | B02 this 与原型链 | 60 分钟 | 是 | 对象方法的绑定规则 |
| 3 | B03 Promise 与 async 异步 | 70 分钟 | 是 | 网络请求的唯一写法 |
| 4 | B04 事件循环与任务队列 | 60 分钟 | 是 | 输出顺序与卡顿的解释 |
| 5 | B05 模块化与 ESM | 50 分钟 | 是 | 拆分代码与消除循环依赖 |
| 6 | B06 错误处理与调试 | 50 分钟 | 是 | 交付前的最后一道关 |
| 7 | B07 Map 与 Set 集合类型 | 50 分钟 | 是 | 字典、去重与弱引用 |
| 8 | B08 正则表达式 | 60 分钟 | 是 | 校验、提取与替换 |
| 9 | B09 事件对象与自定义事件 | 50 分钟 | 是 | 传播模型与组件通信 |
跳过建议
- 只写页面脚本、不写库:B02 可只读 3.1 节与 3.3 节。
- 已有模块化经验:B05 可只读 3.3 节的循环依赖部分。
- 不用正则做校验:B08 可只读 3.1 节与表 3-1,但表 5-1 必读。
阶段出口
- 返回:科目 README
- 术语速查:Z01 术语表
- 下一篇:B01-作用域与闭包

评论 0
还没有评论,快来抢沙发吧~