来源书籍

JavaScript语言精粹(修订版)

编程语言类

类别清单覆盖

尚未完成类别清单核对。

全书概览

JavaScript语言精粹(修订版)

Skill 版本:v7(S0-S1 早期成果未记录版本号;本次 book-workflow S2 续跑首次补记,实际使用 Claude Sonnet 5 执行取材、改写与证据补全)

类别:编程语言类(以讲解 JavaScript 语言本身的设计、语法、语义、可靠性子集为主要目标,非以 JavaScript 为示例讲解其他主题)

阶段一:整体评级

结论:经典原理(高信息浓度 + 高稳定性)

理由:

这本书的核心不是罗列 JavaScript API,而是用“只保留精华子集”的方式解释语言为什么可靠或危险。第1章直接提出避开糟粕、定义可控子集;第3~5章围绕对象、原型、函数、闭包、模块和继承模式解释语言底层模型;附录A/B把全局变量、隐式全局、自动分号插入、==witheval 等问题放在设计缺陷和工程风险层面分析。

稳定性也很高:虽然本书基于较早期 JavaScript,但“函数是一等对象”“闭包实现封装”“原型链共享行为”“弱类型需要工程纪律”“数据交换格式应极简”等判断并不依赖某个框架或浏览器版本。第8章方法清单和附录D语法图偏速查,保留为略读;但全书主体仍是可迁移的语言设计原则,因此整体归类为「经典原理」。

阶段二 + 三:章节进度追踪表

章节号 章节标题 精读/略读 状态 卡片数 理由
前言 前言 Preface 略读 done 0 说明目标与读者定位,主要是元信息,不单独做卡片。
01 第1章 精华 Good Parts 精读 done 3 提出“只使用语言精华子集”的核心方法论,是全书总纲。
02 第2章 语法 Grammar 精读 done 4 语法章节不只是规则罗列,还包含注释、字面量、语句等可靠性取舍。
03 第3章 对象 Objects 精读 done 4 解释对象、属性、原型链和全局污染,是理解 JavaScript 模型的核心。
04 第4章 函数 Functions 精读 done 9 函数、闭包、模块、回调和记忆化构成本书最高密度部分。
05 第5章 继承 Inheritance 精读 done 5 比较伪类、原型、函数化和部件组合,体现语言设计取舍。
06 第6章 数组 Arrays 精读 done 4 数组作为对象的特殊形态,包含长度、枚举和初始化的关键陷阱。
07 第7章 正则表达式 Regular Expressions 精读 done 3 正则章节强调可读性、构造方式和复杂度控制。
08 第8章 方法 Methods 略读 done 0 主要是标准方法速查,信息浓度偏低,作为查阅材料更合适。
09 第9章 代码风格 Style 精读 done 4 把风格上升到长期维护和质量控制,具有强迁移性。
10 第10章 优美的特性 Beautiful Features 精读 done 2 用精简子集总结 JavaScript 的真正表达力。
A 附录A 毒瘤 Awful Parts 精读 done 7 列出难以避开的语言缺陷,适合作为工程防错原则;S2 修订新增”严格模式阻止隐式全局”卡补齐现代限定;S3/S4 审查后新增”浮点数误差要整数化”卡补齐覆盖缺口。
B 附录B 糟粕 Bad Parts 精读 done 5 列出可主动规避的危险特性,卡片价值高。
C 附录C JSLint 精读 done 3 把静态检查视为语言子集执行器,有方法论价值。
D 附录D 语法图 Syntax Diagrams 略读 done 0 内容极短且偏参考图索引,不做卡片。
E 附录E JSON 精读 done 4 JSON 的极简互通设计稳定且可迁移。
索引 索引 Index 略读 done 0 纯索引,不进入卡片生成。
EPUB spine 文件映射
  • 前言 -> text/part0007_split_000.html ~ text/part0007_split_005.html
  • 第1章 -> text/part0008_split_000.html ~ text/part0008_split_003.html
  • 第2章 -> text/part0009_split_000.html ~ text/part0009_split_008.html
  • 第3章 -> text/part0010_split_000.html ~ text/part0010_split_009.html
  • 第4章 -> text/part0011_split_000.html ~ text/part0011_split_015.html
  • 第5章 -> text/part0012_split_000.html ~ text/part0012_split_005.html
  • 第6章 -> text/part0013_split_000.html ~ text/part0013_split_007.html
  • 第7章 -> text/part0014_split_000.html ~ text/part0014_split_003.html
  • 第8章 -> text/part0015_split_000.html ~ text/part0015_split_006.html
  • 第9章 -> text/part0016.html
  • 第10章 -> text/part0017.html
  • 附录A -> text/part0018.html
  • 附录B -> text/part0019.html
  • 附录C -> text/part0020.html
  • 附录D -> text/part0021.html
  • 附录E -> text/part0022.html

待关联术语

(S0-S1 早期成果未建立本表;本次 S2 续跑依据已读取的第1-10章及附录A/B/C/E正文补记,未逐字重新精读全书,仅覆盖生成证据引用时实际读到的段落。)

术语名 出现章节 一句话语境
DOM(文档对象模型) 第1章/第4章 提及浏览器 DOM 和 API 规范制定拙劣、实现不一致,未展开 DOM 本身的结构或机制。
Java Applet 第1章 提及 Java 小应用程序在浏览器中的失败促成 JavaScript 成为默认 Web 语言,未展开 Applet 技术本身。
尾递归优化 第4章 提及部分语言支持尾递归优化、JavaScript(当时)不支持,未展开优化机制的实现原理。
ADsafe.org 规则 附录C JSLint 的 adsafe 选项提及该组织为第三方广告脚本定义的安全子集,未展开具体规则内容。
Node 环境全局属性 附录C JSLint 的 node 选项提及可预定义 Node 环境全局属性,未展开 Node 运行时细节。
YUI(Yahoo! JavaScript 库) 第4章译者脚注 提及 YUI 用两个全局变量贯彻模块模式,未展开 YUI 架构设计。

引用文献

标题 类型 出现章节 一句话语境
《Beautiful Code》(Andy Oram & Greg Wilson 编) 第10章 作者受邀为该选集撰写 JavaScript 一章,书中简述该书主题是计算机程序的表达之美,未展开介绍全书其他章节内容。
《ECMAScript语言规范》第3版(ECMA-262) 规范文档 第1章及全书多处 作为 JavaScript/JScript 标准定义被反复引用,是本书精简子集的对照基准,非叙事性引用。
Top Down Operator Precedence parser(Vaughn Pratt) 技术文章 第10章 提及该自顶向下运算符优先级解析算法被作者用于 JSLint,未在本书中展开算法实现细节。

资金安全问题案例

本书全部精读章节及附录中未出现转账死锁、隔离级别幻读超限额等资金/支付安全问题案例,不适用本表,记为“无”。

阶段四:实践卡进度

序号 实践标题 实践方式 状态 关联章节 产出
1 验证JSON.parse与eval的安全边界差异 证据验证 done 附录E ideas/idea-001-验证JSON.parse与eval的安全边界差异.md,含本机 Node.js v20.9.0 实测输出
2 验证浮点数误差与整数化规避 证据验证 done 附录A ideas/idea-002-验证浮点数误差与整数化规避.md,含本机 Node.js v20.9.0 实测输出
3 验证Object.hasOwn判断属性存在性 证据验证 done 第3章 ideas/idea-003-验证Object.hasOwn判断属性存在性.md,含本机 Node.js v20.9.0 实测输出

候选筛选说明:本书主体是语言设计原则和具体可验证的技术断言(浮点数误差、eval 安全性、属性存在性判断),最适合“证据验证”路径——用真实运行时代码复现书中断言是否成立,而不是虚构调研或行为实验。未采用现实调研/行为实验/创作类路径,因为本书不涉及人物、组织或习惯养成类主张。未做“实现深读”(如深入 V8 引擎源码)是因为书中断言均可用更低成本的直接验证方式确认,符合技术实践优先级“先用最低成本方式满足实践目标”的原则。

阶段五:类别清单核对(编程语言类)

维度 覆盖状态 关联卡片标题或未覆盖理由
类型系统:静态/动态、强/弱类型、类型推导、泛型如何实现 已覆盖 [[弱类型靠纪律]]、[[能力重于血统]];本书基于 ES3 时代 JavaScript,未涉及类型推导/泛型(语言本身当时无此机制),不属于遗漏。
内存管理模型:GC 策略、所有权/借用、手动管理及其取舍 未覆盖 全书未讲解垃圾回收策略或内存所有权/借用模型;[[原型链复用]]提到原型继承可减少初始化时间和内存,但属于对象复用机制而非内存管理机制本身。
并发/并行模型:线程/协程/actor/CSP,内存可见性模型 未覆盖 全书只讲解了异步回调机制([[回调解耦时间]]),未涉及线程、协程、actor 等并发模型或内存可见性保证。
错误处理机制:异常 vs Result/Option vs panic-recover,设计取舍 已覆盖 [[异常分离主线]]
编译/执行模型:编译型/解释型/JIT、字节码设计 未覆盖 全书未讲解 JavaScript 引擎的解释执行、JIT 编译或字节码设计。
模块/包与命名空间设计 已覆盖 [[模块隐藏实现]]、[[全局变量污染]]
语言设计哲学与取舍:为什么这样设计、和其他语言的对比 已覆盖 [[好语言可取子集]]、[[精华胜过整体]]、[[能力重于血统]]、[[小语言也完整]]
元编程/反射/宏能力 已覆盖 [[反射需防原型]]、[[扩充类型要克制]]
性能特性与其代价:zero-cost abstraction 等 已覆盖 [[数组也是对象]](类数组对象性能代价)、[[解析别贪正则]](嵌套正则性能风险)、[[eval扩大攻击面]](eval 编译期性能代价);JavaScript 本身不具备 zero-cost abstraction 概念,本书未涉及属合理边界。

编程语言类清单:6/9 已覆盖,3 项本书未涉及(内存管理模型、并发/并行模型、编译/执行模型均超出本书”语言可靠子集”的写作范围,book-notes 规则不要求为凑清单编造内容)。

章节与卡片

01 精华 Good Parts

  1. 好语言可取子集 普通读书笔记卡
  2. 糟粕难以移除 普通读书笔记卡
  3. 精华胜过整体 普通读书笔记卡

02 语法 Grammar

  1. 注释也是代码 普通读书笔记卡
  2. 块注释有风险 普通读书笔记卡
  3. 语句不产价值 普通读书笔记卡
  4. 假值边界要显式 普通读书笔记卡

03 对象 Objects

  1. 对象是键控集合 普通读书笔记卡
  2. 原型链复用 普通读书笔记卡
  3. 反射需防原型 普通读书笔记卡
  4. 全局变量污染 普通读书笔记卡

04 函数 Functions

  1. 函数是模块单元 普通读书笔记卡
  2. 调用决定this 普通读书笔记卡
  3. 参数宽松有代价 普通读书笔记卡
  4. 异常分离主线 普通读书笔记卡
  5. 扩充类型要克制 普通读书笔记卡
  6. 闭包保存状态 普通读书笔记卡
  7. 回调解耦时间 普通读书笔记卡
  8. 模块隐藏实现 普通读书笔记卡
  9. 记忆化缓存计算 普通读书笔记卡

05 继承 Inheritance

  1. 能力重于血统 普通读书笔记卡
  2. 伪类遮蔽原型 普通读书笔记卡
  3. 原型直接继承 普通读书笔记卡
  4. 函数化继承 普通读书笔记卡
  5. 组合优先继承 普通读书笔记卡

06 数组 Arrays

  1. 数组也是对象 普通读书笔记卡
  2. length不是计数 普通读书笔记卡
  3. 数组枚举要避坑 普通读书笔记卡
  4. 初始化显式维度 普通读书笔记卡

07 正则表达式 Regular Expressions

  1. 正则需要结构化 普通读书笔记卡
  2. 字面量适合常量 普通读书笔记卡
  3. 解析别贪正则 普通读书笔记卡

09 代码风格 Style

  1. 风格影响正确性 普通读书笔记卡
  2. 弱类型靠纪律 普通读书笔记卡
  3. 发布即应整洁 普通读书笔记卡
  4. 预见但不过度 普通读书笔记卡

10 优美的特性 Beautiful Features

  1. 小语言也完整 普通读书笔记卡
  2. 字面量催生JSON 普通读书笔记卡

11 毒瘤 Awful Parts

  1. 全局变量最危险 普通读书笔记卡
  2. 隐式全局难调试 普通读书笔记卡
  3. 函数级作用域 普通读书笔记卡
  4. 分号不要托管 普通读书笔记卡
  5. typeof并不可靠 普通读书笔记卡
  6. 严格模式阻止隐式全局 普通读书笔记卡
  7. 浮点数误差要整数化 普通读书笔记卡

12 糟粕 Bad Parts

  1. 相等必须严格 普通读书笔记卡
  2. with破坏可读性 普通读书笔记卡
  3. eval扩大攻击面 普通读书笔记卡
  4. continue价值有限 普通读书笔记卡
  5. 避免类型包装器 普通读书笔记卡

13 JSLint

  1. Lint是外部约束 普通读书笔记卡
  2. 子集需要执行器 普通读书笔记卡
  3. 声明暴露依赖 普通读书笔记卡

14 JSON

  1. JSON胜在极简 普通读书笔记卡
  2. 文本格式利互通 普通读书笔记卡
  3. 数据不是代码 普通读书笔记卡
  4. 安全解析JSON 普通读书笔记卡

相关主题

暂无公开主题。