JavaScript: The Definition Guide, 7th Edition - JavaScript权威指南(第7版)

图书信息

  • 英文书名:JavaScript: The Definition Guide, 7th Edition

  • 中文书名:JavaScript 权威指南(第7版)

  • 作者:[美] David Flanagan

  • 译者:李松峰

  • 页数:正文 595 页 / 不含附录

  • 英文出版社:O'Reilly Media

  • 中文出版社:机械工业出版社 / 华章图书

  • 出版日期:英文原版 2020 / 简体中文版 2021

  • 个人分类:前端 / JavaScript

  • ISBN:978-7-111-67722-2

书评

写于2022年3月4日。

终于把《JavaScript权威指南(第七版)》断断续续地从头到尾读完了,历时差不多一个半月,虽然中间有很多时间都因为各种原因去读其他书或是写代码了,但读起来确实不容易。

本书常常被俗称犀牛书,并且经常拿来和另一本书《JavaScript高级程序设计》也就是俗称的“高程”比较。在第六版及之前,主流声音通常是推荐阅读高程而非犀牛书,因为第六版的犀牛书超过了一千页,而同期的第三版高程比犀牛书薄得多,并且语言很生动有趣。然而在现在,第七版的犀牛书已经大幅删减了不必要的内容,改变了试图通过一本书涵盖所有知识的策略,而是将那些冷门与不常用的特性只作简单提及,留待读者自行了解;怪异的是,第四版(也就是当前最新版)的高程则相反,加入了大量关于冷门特性的内容,变得事无巨细,甚至作者都换了,阅读体验较上一版很不一样。此外,当前最新版的犀牛书截至ES2020,高程截至ES2019,相比起来版本更新,另外高程在翻译上普遍反映存在不少问题。

我个人并没有读过高程,上面的总结主要来自于当前的网络风评。高程我只看过一点,但排版和作者的笔风我不是很喜欢,再加上网络风评不好,版本也较犀牛书旧一点,因此我还是选择了犀牛书。

犀牛书的阅读体验其实不错,讲得非常透彻与清晰,但很多地方还是缺少足够的示例和配图,这使我需要花很多时间去理解那些抽象的东西。另外,书中也确实就像前言里说的“有一部分内容可能会详细到令人反感”,有些地方也确实令我感到“详细到不必要”,但每当阅读完那些煎熬的部分,我都很庆幸自己没有放弃,为自己完全理解了某一个知识点而高兴。

老实说,虽然阅读体验还不错,但JavaScript本身的繁杂使得书中很多内容的阅读令人感到煎熬,我几乎是在以五倍于阅读其他技术书籍的时间在阅读这本书,尤其是浏览器的那一章,繁杂得令我头昏脑涨,完全没想到JavaScript有这么复杂的底层API,看来确实是被框架惯坏了。

此外,有一些章节确实不很容易理解,例如异步,这可能是我个人的原因,毕竟我其实很少使用异步相关的语言特性,在其他语言里,也往往是开个多线程了事,很少在乎线程安全,平时少量遇到JS异步的时候也就是随便套个await,几乎从未使用过Promise。在详细阅读这一部分之后,JS优秀的单线程异步思想确实令我感到非常有趣,只是理解过程充满了障碍,我现在也不是很确定是否真的理解了。

关于原型继承,我个人倒是没有什么理解障碍。不过JS中的很多元编程技巧确实令我开了眼界,非常有趣,遗憾的是JS不支持运算符重载。

总体而言,是一本很棒的书,虽然阅读并不容易,但只要愿意花时间应当都可以理解,值得每个从业者读一读,包括已经写了很长时间代码的前端程序员。

不过,本书在后半段令我感受到了一些质量下降的感觉。尽管总体翻译质量很不错,但中英文的差异仍给阅读带来了一定的障碍,而且也出现单词拼错这些低级问题,虽然一眼就看出来是笔误但还是令我感到很难受,并且很多地方缩进出了小问题,读起来不太舒服。

作者本身也没有很好地贯彻新特性,比如ES2020中的??运算符前面提了一下后面就没用过了,还是在用||。又比如作者明显还是倾向于直接使用Promise而非async/await语法糖,虽然很多地方给出了使用async/await优化的程序,但看得出来作者还是下意识地优先使用Promise。

此外本书还有一些独特的优点,例如讲了Node,虽然作者说“只涉及必要的Node知识”,但个人认为其实那一章讲得比Node官网上的Tutorial还要好一点,基本上已经把日常能用到的所有Node知识都讲了。

最后一章简单提及了npm、Babel、Webpack、ESLint、JSX(就讲了JSX,顺带提了一点React)的一些基础,供读者自行学习需要的知识。同时最后也拿几页提了一下Flow,讲了一下类型注解的优势。没讲TypeScript还是比较可惜的,不过Flow的基础语法与TS差不多,也差不了多少,考虑到这是本讲JS而不是TS的书,也算是挺不错了。

综合来看,这是我个人当前最推荐的JavaScript入门图书。尽管对于初学者来说可能稍微有些“过细”了,但对于想认真从事前端行业的程序员来说,这无论如何都是一本必读的书(当然,“高程”是另一个替代品)。

最后更新于