这套 JavaScript 书应该慢慢读

getify/You-Dont-Know-JS 是 Kyle Simpson 的 You Don’t Know JS 书系在 GitHub 上的主仓库。当前默认分支是第二版,标题是 You Don’t Know JS Yet。它不是包、课程平台或面试清单。它是一套解释 JavaScript 内部机制的书稿。

这一点很重要,因为很多人带着错误预期进来。它知名、可在线免费阅读、stars 很高,所以很容易被当成初学路径。preface 说得相反:这些书不是温和的 JavaScript 入门材料,并且假设读者已经熟悉 JS,大约有 6 到 9 个月经验。

这个仓库最适合的用途不是“从零学习 JavaScript”。它更适合在你已经写过足够多 JS、并且被 scope、closure、this、object behavior、coercion、modules 和 execution contexts 搞困惑之后,用来修正和加深心智模型。

你读的是哪个版本

仓库当前默认分支是 2nd-ed。README 也链接到 1st-ed 分支,供需要旧版的读者使用。这个区别很容易出错,因为网上很多链接、博客、翻译和引用仍然来自第一版。

README 给出的第二版阅读顺序是:

  1. Get Started
  2. Scope & Closures
  3. The Unbooks,其中包括 Objects & Classes 和 Types & Grammar

前两本已经完整编辑、打磨并出版。README 链接了 Leanpub 和 Amazon 购买页,同时保留在线免费文本。The Unbooks 是 ebook 材料。作者在 2025 年的 issue 讨论中解释过:Objects & Classes 和 Types & Grammar 基本处于 draft-complete 状态,而 Sync & Async、ES.Next & Beyond 已取消。README 现在也反映了这个状态。

所以这里的“完结”有特定含义。它不是六本书都等着完成的计划,而是一个已完成的第二版作品体:两本正式出版书、一个 Unbooks bundle、两个取消的标题。

怎么读

preface 给了很好的阅读建议:不要一口气刷完整套。材料很密。作者建议读完一章后,再按小节回读,练习代码和概念,遇到大概念时花几天消化。这比打勾式清单更有用。

实际阅读路径可以这样:

  1. 如果你会 JS 语法但缺少语言地图,先读 Get Started。
  2. 在 Scope & Closures 上花足够时间。这本最可能改变日常 debug。
  3. this、prototypes、class syntax 和 delegation 仍像背规则时,再读 Objects & Classes。
  4. 当 coercion 和类型行为造成真实困惑时,再读 Types & Grammar。

仓库不再接受贡献,所以读者不应期待 issue 驱动的新编辑重塑书稿。issues 更适合用来查澄清和历史状态,而不是当作活跃课程论坛。

它擅长什么

YDKJS 最擅长挑战被简化过的 JavaScript 传言。preface 反对只学习少数“good parts”的思路。它主张开发者应该理解更多语言部分,包括那些需要谨慎使用的部分。

这也是这些书仍然重要的原因。现代 JavaScript tooling 会把语言机制藏在 TypeScript、bundlers、frameworks、linters 和生成代码下面。YDKJS 的角度不同:它在工具介入前追问代码到底是什么意思。Scope、closure、object delegation、coercion、module patterns 和 execution behavior 仍会从抽象层漏出来。

issue 区也能看出受众。2025 年有一个详细讨论,围绕 hoisting、variable declarations、function declarations,以及浏览器 console 并不等于普通 script execution context。这个仓库吸引的问题不是“怎么做 todo app”,而是“语言为什么这样表现”。

它不适合什么

对多数新手来说,YDKJS 不是好的第一本 JavaScript 教程。如果你需要 DOM 基础、语法练习、browser APIs、小练习,或从零开始的引导路径,应先读别的材料。仓库自己也说它不是温和入门。

当你需要当前 API 文档时,它也不是最佳参考。Web APIs、浏览器兼容性、HTML/CSS/JS reference pages 应看 MDN。想要宽口径 tutorial path,javascript.info 更顺。想要交互练习和更大课程体系,freeCodeCamp 更结构化。

许可也要看清。README 写明材料使用 Creative Commons Attribution-NonCommercial-NoDerivs 4.0。你可以在线免费阅读,但不能把文本当作宽松许可代码,随意改编进商业课程或衍生书。

和附近 JavaScript 学习资源对比

Repository Stars Language Best use Main caution
getify/You-Dont-Know-JS 184,519 Markdown 有基础之后补深层 JS 心智模型 不是温和入门,许可不允许衍生改编
javascript-tutorial/en.javascript.info 25,322 HTML 循序渐进的现代 JavaScript 教程 语言哲学和深层模型没那么强
mdn/content 10,792 Markdown Web 平台行为的参考文档 不是单一书籍路径
tc39/ecma262 15,638 HTML ECMAScript 规范工作的权威来源 是规范语言,不是教程文风
freeCodeCamp/freeCodeCamp 446,617 TypeScript 带引导的课程和练习 平台更宽,不聚焦单一作者的 JS 模型

截至 2026-06,YDKJS 的 GitHub stars 仍明显高于许多 JavaScript 学习仓库,尽管它是书稿而不是应用。这种人气有历史原因:第一版影响了很多 Web 开发者讨论 closures、this、prototypes 和 coercion 的方式。第二版保留了这种深度,但完结状态不同。

Star 曲线怎么读

抽样 star-history 显示,它从 2013 年末到 2016 年快速增长,之后跳到当前总量点。这个形状更像文化影响力故事,而不是 release 故事:YDKJS 很早就进入 JavaScript 学习语境,第一版讨论高峰过去后仍持续积累读者。仓库当前仍在第二版分支下更新,并且是已完结书系状态,而不是废弃的 issue 堆。

把 stars 当作文化影响力信号,而不是“第一天就从这里开始”的建议。一个资源可以很有名,同时也不适合作为新手第一步。

相关仓库

FAQ

You Don’t Know JS 可以免费读吗?

可以。README 说这些书可以在仓库里在线免费阅读。它也链接了 Leanpub 和 Amazon 的付费版本。

You Don’t Know JS 适合新手吗?

通常不适合作为第一份资源。preface 说这些书假设读者已经熟悉 JavaScript,并有大约 6 到 9 个月经验。新手最好先用更温和的教程。

第二版完结了吗?

完结了,但不是最初六本全部完成的意思。README 说书系已完成且不再接受贡献。Get Started 和 Scope & Closures 已出版。The Unbooks 包含 Objects & Classes 和 Types & Grammar。Sync & Async、ES.Next & Beyond 已取消。

第一版在哪里?

README 链接到 1st-ed 分支。跟随旧引用、旧翻译或旧章节名时,应使用那个分支。

我能把书稿改编进自己的课程吗?

要谨慎。README 使用 Creative Commons Attribution-NonCommercial-NoDerivs 4.0。这允许按许可阅读和分享,但不是宽松的 remix 许可。