跳到主要内容

审查 eloquent-javascript — 2026-08-27

结论: ISSUES(8 条:实质 3 + 轻微 5)

门禁实跑:

book-verify: eloquent-javascript: 1049 处出处,0 处对不上 / book-verify: 1 本有拆解、共 1049 处出处、0 处对不上
book-jargon: book-jargon: 1 本,共 0 处专业词没解释就用了
book-jargon --quota: ■ eloquent-javascript —— 段级超额 0 处、节级超额 0 处(上限 1 / 上限 5)
book-dodged: ✓ eloquent-javascript —— 原书常用的承重词都讲到了 / book-dodged: 1 本,共 0 个词被躲开

通过项(先记过,再挑刺)

  • 三条主走查线全部成立,读者能复述机制:闭包(03 §7 multiplier 六帧,环境A/B 状态逐帧带值,并回头解释第 4/5 节埋的伏笔);异步(11 §4 Carla 逐位破译,withTimeout 靠「只能定一次」、递归分支各司其职、带 20ms/50ms/5555 具体值 + §6 事件循环四推论各配 55ms、"Me first!" 实测 + §7 += 缺口);正则回溯(09 §4 "103" 走三条岔路逐步退回 + §5 stripComments 贪婪吞码走查 + 灾难回溯 ([01]+)+b 逐字符翻倍);长轮询(14 §4 五步全环,版本号 4→5、If-None-Match、wait=90、304 兜底、500ms 重试)。
  • 合并声明基本成立:07 prereq 交代「只依赖前六章所以放在错误/正则之前」,正文内容确实只用前六章概念(dijkstrajs 验证与 INI 对比属软引用,见问题 6);12 章三章浏览器原章(16/17/18)映射完整,原文地图三章地址齐全。
  • unread 三书铁律执行:全部拆解章 shelf= 锚 0 处、「依据我们的」0 处、②类补充 0 处——没读过的书没有当锚,符合「没读不能当锚」。
  • 判断块:17 处(14 章 + 总纲 3)全部带「如果错,会错在」。
  • 总纲:主线节(①-⑩)可独立成篇,机制细节退回章节层、只留效果句;兑现表 24 行逐行抽查(13 §6 ETag→14 §4、05 §9 \p→09 §8 等)均兑现。
  • 书卡:版次(4th edition,text/01:5)、CC BY-NC(:11「Commons attribution-noncommercial」)、代码 MIT(:13)三条事实逐条回核属实;readState/claims/notCovered/soWhat 齐全(但 claims 与拆解实际有一处不一致,见问题 1)。
  • 台账:正文无格式/许可/清洗统计泄漏(纸质版少一章属影响理解的背景,合规);TODO(没懂) 零命中;抽查三节段首句连读不跳级;抽查未见整段搬原文。

问题清单

  1. [index.md §4 + aiRef/sources/eloquent-javascript.md claims] 平台游戏项目章未拆,但两处声称已覆盖 — 违反「完整性」与书卡一致性 — 最重的一条。 原书 text/19-fm-project-a-platform-game.txt(657 段,五个项目章里仅次于技能共享站的大章:关卡格式、State 更新、actor 接口、DOM 显示层)未被任何拆解章覆盖:12 章 sourceChapters 只有浏览器三章,原文地图只引 text/16/17/18;全书唯一接触是 13 章 §2 一句「游戏章重游」(canvas 显示器,且出处 text/20:424 属 Drawing on Canvas 的内容,不是平台游戏章本身)。而 index §4 写「五个项目章各保留一条完整走查(平台游戏并入 12 章的机制层)」、书卡 claims 写「五个项目章各含一条可复述的完整走查:…平台游戏…」——两处声明均与实际不符(index §5 判断块「接口化的显示层(游戏)」同样悬空)。写手自己的 reading-notes.md:220 起有该章详细笔记,证明读过但没拆。修法:补拆(或独立成章,或如实并入 12/13 章并给出走查);若决定不拆,须把 index §4 改入「不覆盖」表、书卡 claims/notCovered 同步改口——现在的状态是「声明覆盖、实际空白」,比明说不覆盖更糟。
  2. [11-asynchronous-programming.md §7 脚注[^23] 及原文地图末行] 出处指错段 — 违反出处规矩「指向的段落要真的说了那件事」— 抽查 6 条中唯一不实的一条。 [^23] 与地图行「修法与『缺口看得见』」引 text/14-fm-asynchronous-programming.txt:192(搜「join」)::192 是 passcode 漏洞段,「join」系「joining the network」的子串误匹配;真正支撑「返回各行再 join」的是 :472("calling join on the result of Promise.all")。book-verify 的短语子串匹配放过了它——机检全绿不等于每条出处指对了段。修法:text/14...txt:192:472(正文脚注与地图行两处);顺带说明为何 verify 没拦住,考虑把这类「短词误匹配」记进 verify 的已知盲区。
  3. [10-modules-and-packages.md] 全章没有主走查 — 违反红线二加强「每一章必须有一条主走查…只描述步骤不算数」。 grep「主走查」0 命中;§3 讲 CommonJS 迷你实现只有步骤链(「查缓存→读代码→Function 包函数→调用」),没有拿一个具体模块从头走到尾、每步带具体的字符串/缓存状态;§4 的 ^2.3.0 也只给区间定义、没拿具体版本号走一遍「装不装」的判定。其余 13 章全都有带值走查,唯独这章是目录式讲法,恰是「编程教学书最怕讲了概念没走查」的样板位。修法:补一条(例如:拿 20 行迷你 require 装载一个具体的 dayName 模块文本,逐帧写缓存、函数壳、exports 对象的内容;或拿 {"ini":"^2.3.0"} 对 2.3.1/3.0.0/2.2.0 各走一遍判定)。
  4. [07-two-machines.md:67] 编辑残留:同一短语连抄两遍 —「记忆的存在让它能执行多步计划让它能执行多步计划」。删一处。
  5. [09-regular-expressions.md:24] 编辑残留:英文残词 —「但它是处理字符串的强力工具; Properly 理解它会让你成为更有效的程序员」——「Properly understanding it」只翻了一半。改「正确地理解它」。
  6. [07-two-machines.md §3.2] 前向引用:「INI 那章的解析器按行处理就行」——按总纲推荐顺序(01→14),INI 在 09 章才登场,读者此刻不认识 INI(违反台阶「接不上就补一层」);同节「全书主走查的『1 加到 10』」实指 01 章的本章走查,「全书主走查」称呼不准确。修法:前者改成「(09 章会拆的)那种按行处理的解析器」或删比较句;后者改「01 章那道题」。
  7. [index.md 30 秒导读] 数字失实:「这是一本 70 万字符的经典教材——我们这份拆解与原书体量相当」。实测原书 text 70.99 万字符、拆解正文 30.0 万字符,约 42%,不构成「相当」。教材类拆解 30 万本身不算短(原书近半是代码与练习),但声明必须属实。修法:改「约为原书正文的四成」或删括注;数字照第 13 条给可核对的参照物。
  8. [index.md §6 兑现表第 12 行] 记账不实:「07 §1 | 本章为何排在错误章之前 | 本页 §2 ⑤(只依赖前六章)| ✓」——07 §1 正文并没有提出也没回答「为何排在错误章之前」(理由只写在 frontmatter prereq 里);index §2 ⑤ 只以「验收」暗示,没说「只依赖前六章」。许诺位置与兑现位置都不在正文。修法:在 07 §1 正文补一句排位理由,或把这行改记为「07 frontmatter prereq → 本页 §2 ⑤」并核口径一致。

复核者注

  • 问题 1-3 任何一条单独即不够 PASS(完整性、出处属实、主走查是三道硬门);4-8 为措辞/记账级。
  • 闭包/异步/正则/长轮询四条主走查线质量高,是这版拆解最结实的部分;总纲主线一节能独立复述全书;门禁四绿属实(但问题 2 证明 verify 的短语匹配有盲区,出处「0 错」应理解为「地址都能对上字面」,不等于「段段指对」)。