每个程序员都知道 Brendan Eich——那个用10天写出 JavaScript 的传奇人物。但几乎没人提到过另一个人:没有他,你今天大概不会在用 JavaScript 写代码。2026年5月30日,Fireship(YouTube 300万+订阅的编程顶流频道)发布了一条6分29秒的视频《The Forgotten Developer Who Saved JavaScript》,24小时内冲上143万播放,直指一个被编程史遗忘的关键人物——Douglas Crockford。
这个人的贡献有多炸裂?他发明了 JSON(没错,就是现在每天传输数十亿次的那个数据格式),他写了第一本让开发者认真对待 JS 的书,他创建了第一个 JS 代码检查工具。在 JavaScript 还被当作"玩具语言"的黑暗年代,Crockford 是那个站出来说"这语言有救"的人。Fireship 这条视频虽然只有6分钟,但信息密度极高,把 JavaScript 从"过街老鼠"到"世界主宰"的转折点讲得清清楚楚。这篇文章,我们把它彻底拆开,再补上视频来不及讲的故事。
| 项目 | 内容 |
|---|---|
| 视频标题 | The Forgotten Developer Who Saved JavaScript |
| 频道 | Fireship (Jeff Delaney) |
| 时长 | 6分29秒 |
| 播放量 | 143万+ (发布24小时内) |
| 核心主题 | Douglas Crockford 如何通过 JSON、"JavaScript: The Good Parts"等贡献拯救了 JavaScript |
视频开篇就点明了一个残酷事实:JavaScript 在诞生后的前10年里,是全行业公认的"垃圾语言"。
这不是偏见。JavaScript 从设计之初就带着原罪——Brendan Eich 在1995年仅用10天就完成了初版实现,为了赶 Netscape Navigator 2.0 的发布期限。结果?全局变量泄漏、隐式类型转换、== vs === 的混乱、with 语句的灾难性设计、prototype 继承让人摸不着头脑……这些问题让 Java、C++、Python 背景的程序员对 JS 嗤之以鼻。
视频特别提到了几个让开发者抓狂的经典案例:[] == ![] 返回 true,"1" + 1 得到 "11" 而不是 2,typeof null 返回 "object"(这个 bug 到2026年都没修复)。在1990年代末到2000年代初,"JavaScript 程序员"几乎是一种侮辱——这意味着你不是"真正的程序员"。
我的延伸分析:视频没有深入讲的是,JavaScript 的糟糕声誉部分源于浏览器大战。IE 和 Netscape 各自实现不同版本的 JS(JScript vs JavaScript),跨浏览器兼容简直是噩梦。开发者花在 document.all vs document.getElementById 上的时间,比写业务逻辑还多。jQuery 后来之所以能横扫天下,正是因为 John Resig 用一层优雅的 API 抹平了这些差异。但真正为 JavaScript 奠定理论基础的人,不是 Resig——而是 Crockford。
视频的核心转折点:2001年,Douglas Crockford 做了一件没人做过的事——他认真读完了 ECMAScript 规范文档。
听起来不可思议对吧?但当时确实没人认真对待这份规范。ECMAScript 标准文档被公认"质量极差"、"难以阅读"、"令人费解"(这是 Crockford 本人的评价)。但就在这份混乱的规范中,Crockford 发现了一个惊人的事实:JavaScript 的设计并非全是垃圾,它里面藏着一门优秀的函数式编程语言。
具体来说,Crockford 发现了 JavaScript 中被忽视的宝藏: - 一等函数(First-class functions):函数可以作为参数传递、作为返回值、赋值给变量 - 闭包(Closures):函数可以记住创建时的词法作用域 - 对象字面量(Object literals):无需类定义就能创建对象 - 动态类型(Dynamic typing):灵活但需要纪律约束 - 原型继承(Prototypal inheritance):比经典继承更强大,只是被误解了
2008年,Crockford 将这些发现集结成书——《JavaScript: The Good Parts》。这本书只有170页,却彻底改变了整个行业对 JavaScript 的看法。O'Reilly 出版,ISBN 978-0-596-51774-8,至今仍是 JavaScript 开发者的必读书目。
我的延伸分析:这本书的影响力怎么高估都不为过。在它出版之前,"学习 JavaScript"意味着学习所有语法特性(包括大量设计失误)。Crockford 的革命性观点是:你不需要学完整语言,你只需要学好的部分,主动避开坏的部分。这种思路直接催生了后来的 ESLint、TypeScript 的严格模式、甚至影响了 ES6+ 的设计哲学——新标准实际上是在把 "The Good Parts" 编入语言本身。
视频花了相当篇幅讲述 Crockford 最具影响力的发明——JSON(JavaScript Object Notation)。
2001年,Crockford 在 State Software(一家创业公司)工作期间,正在寻找 XML 的替代方案。当时的 Web 服务几乎全部使用 XML/SOAP 进行数据交换,但 XML 的冗余标签和复杂解析让开发者苦不堪言。Crockford 意识到 JavaScript 的对象字面量语法天然就是一种数据描述格式——它比 XML 简洁得多,且 JavaScript 可以直接 eval() 解析(虽然后来证明这有安全隐患)。
2002年,Crockford 注册了 json.org 域名,发布了 JSON 的规范。2006年7月,JSON 被正式标准化为 RFC 4627。今天?JSON 是全球使用最广泛的数据交换格式,没有之一。从 REST API 到 NoSQL 数据库(MongoDB、CouchDB),从配置文件到流式传输,几乎所有的现代 Web 应用都在使用 JSON。
一个有趣的细节:Crockford 曾给自己的软件 JSMin 加了一个特殊的许可证条款——"The Software shall be used for Good, not Evil"(本软件仅可用于善事,不可用于恶事)。这个条款导致 JSON 的 Java 实现一度不被认为是"开源软件",甚至被 Google Code 拒绝托管。直到2022年,Crockford 才将 JSON 的 Java 实现改为公共领域许可。
视频还提到了 Crockford 的另外两个重要贡献:
JSLint(2002年)——这是有史以来第一个 JavaScript 静态代码分析工具。在 JSLint 之前,JavaScript 没有任何形式的质量检查工具。JSLint 强制执行严格的代码规范,禁止使用 ==(必须用 ===),禁止使用 with 语句,要求所有变量先声明后使用。虽然 JSLint 以"固执"著称(Crockford 本人曾说 "JSLint will hurt your feelings"),但它开创了 JavaScript 代码质量工具的先河,直接影响了后来的 JSHint 和 ESLint。
JSMin(2003年)——第一个 JavaScript 代码压缩工具。它移除代码中的空白和注释,大幅减小文件体积。在没有 Webpack、Vite、esbuild 的年代,JSMin 是前端性能优化的必备工具。
我的延伸分析:今天我们习以为常的整个 JavaScript 工具链——linter、minifier、bundler——它们的哲学源头都可以追溯到 Crockford。他不仅发现了 JavaScript 的"好部分",还构建了工具来帮你只写"好部分"。这种"通过工具强制代码质量"的思路,后来被 ESLint、Prettier、TypeScript 编译器继承并发扬光大。
视频最精彩的部分是展示了 Crockford 的思想如何渗透到现代 JavaScript 的每个角落:
ES5 Strict Mode(2009年):"use strict" 的引入直接受到了 Crockford "避开坏部分"理念的影响。严格模式禁止了 with 语句、禁止未声明的变量赋值、禁止八进制字面量——这些全是 Crockford 在《The Good Parts》中指出的问题。
ES6+ 的设计哲学:let/const 取代 var(解决变量提升问题)、箭头函数(简化函数表达式)、class 语法(更清晰的构造器模式)、Promise(取代回调地狱)——每一个特性都是在消除 Crockford 标记出的"坏部分"。
TypeScript 的崛起:Anders Hejlsberg 在设计 TypeScript 时大量借鉴了 Crockford 的理念——通过类型系统来约束 JavaScript 的"坏部分",同时保留"好部分"的灵活性。
mindmap
root((Douglas Crockford 的遗产))
理论贡献
JavaScript: The Good Parts (2008)
识别语言中的优秀子集
"只学好部分,避开坏部分"
影响 ES6+ 设计哲学
深入解读 ECMAScript 规范
发现函数式编程内核
重新定义 prototype 继承价值
工具发明
JSON (2001-2002)
全球最广泛使用的交换格式
取代 XML 成为 Web 标准
RFC 4627 / RFC 8259
JSLint (2002)
第一个 JS 静态分析工具
"会伤害你的感情"
催生 JSHint → ESLint 生态
JSMin (2003)
第一个 JS 代码压缩工具
开创前端性能优化领域
对现代开发的影响
ES5 Strict Mode
let/const 取代 var
TypeScript 的设计理念
ESLint/Prettier 工具链
视频提出了一个引人深思的问题:为什么 Brendan Eich 无人不知,而 Douglas Crockford 却鲜为人知?
答案是多方面的:
2026年的 JavaScript 已经是全球使用率最高的编程语言。npm 上有超过300万个包,JavaScript 运行在浏览器、服务器、移动端、嵌入式设备甚至数据库里。
Crockford 当年标出的"坏部分"——var、with、全局变量泄漏、隐式类型转换——在现代 JavaScript 中要么已被废弃,要么有了更好的替代方案。他标出的"好部分"——一等函数、闭包、对象字面量——如今是每个开发者的基本功。
但 Fireship 在视频结尾留下了一个值得深思的观点:JavaScript 的成功不仅归功于某一个"拯救者",而是整个社区共同努力的结果。Crockford 点燃了火种,但让 JavaScript 成为今天的样子的,是数百万开发者和无数开源贡献者的集体智慧。
flowchart TB
subgraph 黑暗时代["JavaScript 黑暗时代 1995-2005"]
A1["Brendan Eich<br>10天写出 JavaScript"] --> A2["浏览器大战<br>IE vs Netscape"]
A2 --> A3["语言设计缺陷<br>全局变量/隐式转换/with"]
A3 --> A4["业界共识:<br>JS 是玩具语言"]
end
subgraph 转折点["Crockford 的转折 2001-2008"]
B1["2001: 深读 ECMAScript 规范"] --> B2["2002: 发明 JSON"]
B1 --> B3["2002: 创建 JSLint"]
B1 --> B4["2003: 创建 JSMin"]
B2 --> B5["2006: JSON 标准化 RFC 4627"]
B4 --> B6["2008: 出版 Good Parts"]
B6 --> B7["核心观点:<br>JS有优秀的内核<br>只需避开坏部分"]
end
subgraph 影响["对现代开发的影响"]
C1["ES5 Strict Mode<br>2009"]
C2["ES6+ 新特性<br>let/const/箭头函数/Promise"]
C3["工具链进化<br>JSHint → ESLint → Prettier"]
C4["TypeScript<br>Anders Hejlsberg"]
C5["JSON 成为<br>Web 交换标准"]
end
A4 --> B1
B7 --> C1
B7 --> C2
B3 --> C3
B6 --> C4
B2 --> C5
style 黑暗时代 fill:#2d1b1b,stroke:#ff6b6b,color:#fff
style 转折点 fill:#1b2d1b,stroke:#51cf66,color:#fff
style 影响 fill:#1b1b2d,stroke:#339af0,color:#fff
掌握"好部分"就够了。如果你还在用 var、还在写 == 比较、还在忽略闭包和一等函数——2026年了,这些都是 Crockford 20年前就告诉我们要避开的"坏部分"。把代码里的 var 全部替换成 const 或 let,用 === 代替 ==,这些小改变就是 Crockford 精神的最佳实践。
理解工具链的哲学根源。每次你用 ESLint 规则禁止某种写法时,你实际上在践行 Crockford 的理念——通过工具来强制代码质量。下次配置 .eslintrc 时,记得这个哲学的源头。
JSON 不只是数据格式,更是一种设计哲学。Crockford 选择 JSON 的核心理由是简洁。在做 API 设计时,问问自己:我的数据结构是否像 JSON 一样简洁明了?过度复杂的数据格式是技术债的温床。
深入理解你使用的工具。Crockford 最大的贡献来自他认真读完了没人愿意读的 ECMAScript 规范。在2026年,有多少开发者真正读过 HTTP/2 RFC、WebAssembly 规范、或者你正在使用的框架的源代码?深入底层,才能发现别人看不到的价值。
"Less is More" 的编程哲学。Crockford 的核心思想是:一个语言不需要所有特性都好,只要好的部分足够强大就行。这个思路同样适用于架构设计、API 设计、甚至产品功能设计——学会做减法。
历史感让你成为更好的工程师。了解 JavaScript 为什么长成今天这个样子,能帮你理解为什么 typeof null === "object" 不是一个 bug 而是一个历史遗留问题,为什么 Array.isArray() 比 instanceof Array 更可靠,为什么 Promise 比回调更好。知其然更知其所以然。
Douglas Crockford 不是创造了 JavaScript 的人,但他是让 JavaScript 值得使用的人——他教会了一个行业如何从一门混乱的语言中提炼出优雅的内核。
本文由「51学通信」技术团队出品。51学通信由通信行业18年老兵爱卫生(微信ID: gprshome201101)维护,聚焦5G/6G核心网、3GPP标准解读、通信前沿技术深度分析。 出版作品有《5G核心网原理与实践》《IMS原理与实践》等4本通信专业书籍。知识星球「51学通信」提供深度技术答疑和行业洞察。 信前沿技术深度分析。 出版作品有《5G核心网原理与实践》《IMS原理与实践》等4本通信专业书籍。知识星球「51学通信」提供深度技术答疑和行业洞察。
[!tip] 51学通信知识星球 星主:爱卫生(微信:gprshome201101)——公众号「51学通信」创办者,19 年通信行业运维与讲师经验,著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书(各大电商平台有售)。 星球定位:深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域,主打运维岗位与信令分析。 当前规模:5200 篇主题 / 990 个回答,198 元/年。 加入福利:加入星球后请加爱卫生微信,拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题,另有群内分享。 AI 加持:51学通信知识星球已作为 skill 接入 WorkBuddy,使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例,做总结、找文档和 PPT 等场景全覆盖。
