关于
原书《Understanding ECMAScript 6》,作者 Nicholas C. Zakas ,在线阅读地址。此书为开源书籍,可访问它的github 仓库,若发现问题可以去提交 issue 。
此书的官方中文版已经在 2017 年 7 月由电子工业出版社正式出版,可查看亚马逊上的购买链接。而此处的翻译只是我本人的义务翻译。
此书中文版出版之前, oshotokill 对本书进行了义务翻译(阅读地址),但整体工作未完成,欠缺三章:
- 第六章 符号与符号属性
- 第十章 增强的数组功能
- 第十二章 代理与反射接口
原先我只是对 oshotokill 的翻译提出了修正建议,此后才对这三章进行了翻译。最后我又决定将此书完整重译一遍,只遗漏了引言部分。其中有少数地方借鉴了 oshotokill 的翻译,特此表示感谢。
在 GitBook 页面上阅读本书,请点击首页右上角的“Read”按钮;也可以点击“Download”按钮下载 PDF 、 Mobi 或 ePub 格式的电子书。翻译文字的修正过程可查阅 修改记录。
翻译过程确实比较累,毕竟是第一次做全书翻译。这次是出于本人兴趣的义务翻译,可能存在错误,肯定也会有语言表述方面的一些问题,欢迎指正。无论是对原书内容的指正还是对译文的指正,都可以。
本书原作者 Zakas 长期供职于雅虎,是著名的 JS 库 YUI 的主要作者,有着非常丰富的一线工作经验。他同时也是一个成功的作者,其最重要的著作《 JavaScript 高级编程》基本上是 JS 领域的必读之作,而他还出版了另一些质量很高的著作。《高级编程》一书实际上并不是完全高深的内容,而是从基本的层次开始讲述,逐步提高,全书结构比较良好,对初学者或有一定经验的开发者来说都是很有用的。
ECMAScript 6 作为 JS 的新标准 2015 年便已推出,已经不是最新版了,但到目前为止市面上完整介绍其特性的书却非常少。其中原因也许是语法变动太大,而有些特性浏览器直到现在都没有完全支持。不过通过 Babel 之类的工具,早就可以开始使用 ES6 了,所以这方面完整著作的缺失不能不说是一个遗憾。
本书的英文版在 2016 年 8 月 30 日正式出版,一如既往保持了 Zakas 的一贯水准。组织结构比较合理,并不完全是罗列新特性,而是有侧重点地进行介绍。同时在介绍某些特性时,还会特别提醒读者其中的范例运行效率不高,可考虑用其他方式实现,体现出作者负责任的态度。此外,在不少地方还会讲述新标准的制定背景,有的是因为原有功能缺乏,有的是旧版 ES 有坑容易误踩,因此有些新标准才顺应形势得以出台。如果认真学习此书,不但对了解并使用 ES6 有帮助,也会有助于规避 JS 的一些旧坑。最后,此书在附录部分对 ES2016 也作了介绍。
即使像《 JS 高级编程》这样的经典著作,也会存在一些问题。例如原书对于闭包的定义我个人就觉得很不满意。其定义不能说是错的,但有两个问题:1、用词有二义性;2、太过简略,没有在定义中体现出 JS 闭包的真正特征。
相应的,本书也存在一些问题。
- 代码或引用内容中存在一些笔误。
- 有些描述不符合浏览器的实际情况,这也许是浏览器对规范标准的支持有偏差。
- 有少数错误,这在译文中都有标注,但可能还有译者所未发现的。同时因为翻译全书确实比较累,所以有些范例代码我比较快地跳过去了,没有特别仔细看。如果读者发现有错,可以在此处提出,也可以到原作者的 github 上去提交 issue (但是原作者回应可能不会太及时)。
- 有些内容讲述得不够完整,例如 Promise 链的问题。在比较长的链中,如果中间抛出了一个错误,而这个错误没有被
catch()
及时捕获,就会沿着整个链继续向下传递,跳过链中的所有then()
处理,直到遇到catch()
为止,或是静默失败(链条下方没有任何拒绝处理的情况下)。这一点在原书中并没有明确进行描述,这是让我觉得美中不足的地方。而且关于 Promise 链,原书的范例都太简单了,除上述所提的内容外,其实还有更多可讲的。
但瑕不掩瑜,这本书还是值得一看的好书。