04 · 不靠框架也能写应用 · MODULE 04

JavaScript:语言核心与异步运行时

用可观察的小实验理解类型、作用域、闭包、原型和事件循环,再把这些知识装进一个真正有状态的应用。你会知道代码为什么工作,也知道它为什么会在边界条件下失败。

进阶18 小时8 个核心主题

先用一句白话理解

JavaScript 主线程像只有一位服务员的小店:同步任务要按顺序处理,耗时操作交给外部系统,完成后再把回调排进任务队列。理解排队规则,异步就不再像魔法。

学完你能做到什么

01

准确判断值、引用、类型转换和相等性带来的结果

02

用作用域、闭包、this 和原型解释常见代码行为

03

使用模块、纯函数和明确的数据流组织中型应用

04

用 Promise、async/await 和错误处理编写可靠异步流程

05

读懂事件循环中同步代码、微任务与任务的执行顺序

把每个核心概念讲透

不要把知识点当作名词列表。下面每一项都要回到真实项目中回答:它解决什么问题,如何验证,以及在哪些条件下会失效。

01CORE CONCEPT

原始值、对象、引用、类型转换与严格相等

先在浏览器中观察结构、样式、事件、网络和渲染行为。把这个概念放回“开发无框架任务看板,支持新增、筛选、拖动、撤销/重做、异步加载和本地保存,并用模块隔离状态、视图和数据访问。”中,回答它解决了什么问题、依赖哪些输入、会在哪些边界失效。

验证方式用 DevTools、自动测试和跨浏览器结果验证假设:完成“手写并解释一个闭包驱动的状态容器”,记录现象、预期、差异和结论。
02CORE CONCEPT

函数、词法作用域、闭包、this 与执行上下文

先在浏览器中观察结构、样式、事件、网络和渲染行为。把这个概念放回“开发无框架任务看板,支持新增、筛选、拖动、撤销/重做、异步加载和本地保存,并用模块隔离状态、视图和数据访问。”中,回答它解决了什么问题、依赖哪些输入、会在哪些边界失效。

验证方式用 DevTools、自动测试和跨浏览器结果验证假设:完成“不运行代码也能判断典型事件循环题的输出顺序”,记录现象、预期、差异和结论。
03CORE CONCEPT

原型链、类、组合、Map、Set 与常用数组方法

先在浏览器中观察结构、样式、事件、网络和渲染行为。把这个概念放回“开发无框架任务看板,支持新增、筛选、拖动、撤销/重做、异步加载和本地保存,并用模块隔离状态、视图和数据访问。”中,回答它解决了什么问题、依赖哪些输入、会在哪些边界失效。

验证方式用 DevTools、自动测试和跨浏览器结果验证假设:完成“把单文件脚本拆成职责清晰的原生 ES 模块”,记录现象、预期、差异和结论。
04CORE CONCEPT

不可变更新、状态机思维与错误边界

先在浏览器中观察结构、样式、事件、网络和渲染行为。把这个概念放回“开发无框架任务看板,支持新增、筛选、拖动、撤销/重做、异步加载和本地保存,并用模块隔离状态、视图和数据访问。”中,回答它解决了什么问题、依赖哪些输入、会在哪些边界失效。

验证方式用 DevTools、自动测试和跨浏览器结果验证假设:完成“为网络失败、超时和空数据提供明确用户反馈”,记录现象、预期、差异和结论。
05CORE CONCEPT

ES Modules、动态 import 与模块依赖

先在浏览器中观察结构、样式、事件、网络和渲染行为。把这个概念放回“开发无框架任务看板,支持新增、筛选、拖动、撤销/重做、异步加载和本地保存,并用模块隔离状态、视图和数据访问。”中,回答它解决了什么问题、依赖哪些输入、会在哪些边界失效。

验证方式用 DevTools、自动测试和跨浏览器结果验证假设:完成“手写并解释一个闭包驱动的状态容器”,记录现象、预期、差异和结论。
06CORE CONCEPT

事件循环、任务、微任务、Promise 与 async/await

先在浏览器中观察结构、样式、事件、网络和渲染行为。把这个概念放回“开发无框架任务看板,支持新增、筛选、拖动、撤销/重做、异步加载和本地保存,并用模块隔离状态、视图和数据访问。”中,回答它解决了什么问题、依赖哪些输入、会在哪些边界失效。

验证方式用 DevTools、自动测试和跨浏览器结果验证假设:完成“不运行代码也能判断典型事件循环题的输出顺序”,记录现象、预期、差异和结论。
07CORE CONCEPT

迭代器、生成器、异步迭代与资源清理

先在浏览器中观察结构、样式、事件、网络和渲染行为。把这个概念放回“开发无框架任务看板,支持新增、筛选、拖动、撤销/重做、异步加载和本地保存,并用模块隔离状态、视图和数据访问。”中,回答它解决了什么问题、依赖哪些输入、会在哪些边界失效。

验证方式用 DevTools、自动测试和跨浏览器结果验证假设:完成“把单文件脚本拆成职责清晰的原生 ES 模块”,记录现象、预期、差异和结论。
08CORE CONCEPT

垃圾回收、事件监听器和常见内存泄漏

先在浏览器中观察结构、样式、事件、网络和渲染行为。把这个概念放回“开发无框架任务看板,支持新增、筛选、拖动、撤销/重做、异步加载和本地保存,并用模块隔离状态、视图和数据访问。”中,回答它解决了什么问题、依赖哪些输入、会在哪些边界失效。

验证方式用 DevTools、自动测试和跨浏览器结果验证假设:完成“为网络失败、超时和空数据提供明确用户反馈”,记录现象、预期、差异和结论。

这一章的学习步骤

1原始值、对象、引用、类型转换与严格相等
2函数、词法作用域、闭包、this 与执行上下文
3原型链、类、组合、Map、Set 与常用数组方法
4不可变更新、状态机思维与错误边界
5ES Modules、动态 import 与模块依赖
6事件循环、任务、微任务、Promise 与 async/await
7迭代器、生成器、异步迭代与资源清理
8垃圾回收、事件监听器和常见内存泄漏
STEP 01

手写并解释一个闭包驱动的状态容器

STEP 02

不运行代码也能判断典型事件循环题的输出顺序

STEP 03

把单文件脚本拆成职责清晰的原生 ES 模块

STEP 04

为网络失败、超时和空数据提供明确用户反馈

动手任务

PROJECT BRIEF

开发无框架任务看板,支持新增、筛选、拖动、撤销/重做、异步加载和本地保存,并用模块隔离状态、视图和数据访问。

交付清单

  • 可操作的任务看板
  • 状态转移图和模块依赖图
  • 至少五个异常场景及处理结果
  • 一篇事件循环实验记录

亲手观察同步任务、微任务和任务

javascript
console.log("1:同步开始");

setTimeout(() => console.log("4:任务队列"), 0);

Promise.resolve().then(() => {
  console.log("3:微任务");
});

console.log("2:同步结束");

// 输出顺序固定为 1、2、3、4。可直接粘贴到浏览器 Console。

先让它跑起来,再逐行修改。最有效的学习方式,是观察你的改动如何影响结果。

三级练习:从复现到生产

每一级都比上一级少一点提示、多一点约束。只有在不看答案也能完成验收时,知识才真正变成能力。

01
LEVEL 1 · 基础复现

让核心机制第一次跑通

  • 手写并解释一个闭包驱动的状态容器
  • 不运行代码也能判断典型事件循环题的输出顺序
  • 把单文件脚本拆成职责清晰的原生 ES 模块
  • 为网络失败、超时和空数据提供明确用户反馈
02
LEVEL 2 · 独立改造

改变约束,验证你真的理解

  • 不看教程,独立完成:准确判断值、引用、类型转换和相等性带来的结果
  • 不看教程,独立完成:用作用域、闭包、this 和原型解释常见代码行为
  • 不看教程,独立完成:使用模块、纯函数和明确的数据流组织中型应用
  • 不看教程,独立完成:用 Promise、async/await 和错误处理编写可靠异步流程
  • 不看教程,独立完成:读懂事件循环中同步代码、微任务与任务的执行顺序
03
LEVEL 3 · 生产挑战

把实验变成能交付的工程

  • 可操作的任务看板
  • 状态转移图和模块依赖图
  • 至少五个异常场景及处理结果
  • 一篇事件循环实验记录
  • 检查兼容性、可访问性、性能、安全与渐进增强,并把检查结果写进项目复盘。

最容易踩的坑

01

混淆对象变量本身和它所引用的数据

02

在业务代码中依赖隐式类型转换

03

用 async/await 后忘记处理拒绝、取消和竞态

04

把所有状态、DOM 操作和请求都塞进一个文件

先回答,再展开参考答案

Q01这一课最核心的业务目标是什么?

用可观察的小实验理解类型、作用域、闭包、原型和事件循环,再把这些知识装进一个真正有状态的应用。你会知道代码为什么工作,也知道它为什么会在边界条件下失败。

Q02如果只能保留三个验收结果,应该保留什么?

可操作的任务看板;状态转移图和模块依赖图;至少五个异常场景及处理结果

Q03学习过程中最需要主动避免什么?

混淆对象变量本身和它所引用的数据;在业务代码中依赖隐式类型转换;用 async/await 后忘记处理拒绝、取消和竞态;把所有状态、DOM 操作和请求都塞进一个文件

Q04怎样证明你不是“看懂了”,而是真的会做?

独立完成“开发无框架任务看板,支持新增、筛选、拖动、撤销/重做、异步加载和本地保存,并用模块隔离状态、视图和数据访问。”,并用测试、数据或运行结果逐项验收交付清单。

PRODUCTION READINESS

本课完成检查表

全部能打勾,再进入下一课。

  • 目标明确:准确判断值、引用、类型转换和相等性带来的结果
  • 核心机制已用最小实验验证:手写并解释一个闭包驱动的状态容器
  • 风险已检查:混淆对象变量本身和它所引用的数据
  • 风险已检查:在业务代码中依赖隐式类型转换
  • 风险已检查:用 async/await 后忘记处理拒绝、取消和竞态
  • 风险已检查:把所有状态、DOM 操作和请求都塞进一个文件
  • 交付物可复现:可操作的任务看板
  • 交付物可复现:状态转移图和模块依赖图
  • 交付物可复现:至少五个异常场景及处理结果
  • 交付物可复现:一篇事件循环实验记录

继续深入的官方资料

课程版本基线:2026 年 7 月。涉及版本号时,以链接中的官方文档为最终依据。