ES6 标准入门(第2版)
  • 推荐0
  • 收藏2
  • 浏览2.0K

ES6 标准入门(第2版)

阮一峰 (作者) 

  • 书  号:978-7-121-27657-6
  • 出版日期:2016-01-07
  • 页  数:336
  • 开  本:16(185*235)
  • 出版状态:上市销售
  • 维护人:张春雨
ES6(又名 ES2105)是 JavaScript 语言的新标准,2015 年 6 月正式发布后,得到了迅速推广,是目前业界超级活跃的计算机语言。本书是国内仅有的一本 ES6 教程,在前版基础上增补了大量内容——对标准进行了彻底的解读,所有新增的语法知识(包括即将发布的 ES7)都给予了详细介绍,并且紧扣业界开发实践,给出了大量简洁易懂、可以即学即用的示例代码。
本书为中级难度,适合对 JavaScript 语言或 ES5 已经有所了解的读者,用来提高水平,了解这门语言的最新发展;也可当作参考手册,查寻 ES6/ES7 新增的语法点。
绝无仅有的ES6全书|标准解读透彻|特性覆盖全面|案例丰富实用|代码即学即用
推荐序 1
为什么我们要关心标准
“ECMAScript 是 JavaScript 语言的国际标准,JavaScript 是 ECMAScript 的实现。”
本书第 1 章的这句话已经清楚地告诉我们,这是一本不实用的书。我们学习了这本书,并不
意味着掌握了一项实用的技术,而只是掌握了一个未来可能会发布的技术标准。而标准,有
可能在将来被实现,变成主流,也有可能就仅仅是一个标准,没有人真的去实践它。如果你
再了解一下第 1 章里面介绍的 ECMAScript 4.0 草案的血泪史,或者回顾一下曾经红极一时的
XHTML,就更容易明白这一点了。
那我们为什么不直接忽略标准,拥抱实践就好呢?来,我们一起翻开小学课本,跟我念:柏林
已经来了命令,阿尔萨斯和洛林的学校只许教德语了……(《最后一课》)
当统治者宣布一门语言成为“标准”的时候,不管是在现实生活还是技术领域里面,往往就意
味着所有其他的选项自动消失了,我们只能去学习“统治者”的语言。幸运的是,在技术领域
里面,跳出来争取对技术的影响力和主导权,不但不违反任何一国的宪法,往往还是被鼓励的。
因此,技术的未来发展,是我们可以去发出声音,去影响,乃至于去引领的。而要做到这些,
我们需要搞清楚,ECMA 和各大互联网巨头们,他们正在做什么,正在把技术往哪里引领;他
们引领的方向,到底是对所有人有利的,还是只是对某些公司有利;我们中国的开发者和中国
的公司,要怎么加入到这些标准的制订过程中,把标准带到更好的方向上。
最近几年,越来越多的中国公司加入到各种国际标准组织中,参与到各种标准(尤其是在东亚
文字处理、排版、输入法相关的领域)制订过程中,发出了中国技术人员的声音。随着中国国
力的增强,中国开发厂商和技术人员的影响力的发展壮大,可以预见,不久的将来,中国工程
师也许会深入参与到 ECMAScript 7 和 HTML6 这样的技术标准的制订过程里面,跟各国的专
IV
推荐序 1
家一起探讨,我们中国的开发者不喜欢这样,更喜欢那样。在那些标准大会上,我们的发言权
将来自于我们对标准的深入理解、我们对技术发展的独到眼光和我们建设起来的技术影响力。
作为一个 JS 开发者,实话说,对于 ECMAScript 6 里面的很多内容(比如 let 语句),我并不
完全认同。但是很遗憾,这个标准的制定过程没我们什么事。但是如果我们从现在开始关注国
际标准,翻译标准文档,让更多人了解标准,更多公司加入标准组织、参与标准制订,也许未
来的中国技术圈不但会是很多人的一个圈子,还会是很有影响力的一个圈子。
“我们说的话,让世界都认真听话。”(S.H.E,《中国话》)
腾讯驻 W3C 顾问委员会代表  黄希彤(stone)
黄希彤(网名 emu),Web 性能优化(WPO)领域实践者,信息无障碍领域推动
者。腾讯 Web 前端专家,腾讯驻 W3C 顾问委员会代表,腾讯 QQ 空间技术总监。
推荐序 2
因为一件往事,我现在轻易不敢给别人写序或者书评。那天我在想,如果我要给这本书写序,
是不是应该先把这本书拿给贺老(hax)看看。后来呢,我到阮一峰老师的 GitHub 上看了一看,
发现这本书有 605 个 star,若干个已解决和未解决的 issue,所以我就放心了。开源真是好啊!
这本书是关于 ES6 的,我对 ES6 并没有特别系统的研究,但是也在工作中使用了一部分 ES6 的
特性,使用得最多的是 Promise,其他的特性只是研究,很少使用,主要是因为本身支持 ES6
的环境和工具有限。浏览器就不说了,现在的前端工程师在一些产品中能够抛弃 IE6 已经是
很幸福的事情了,但是即使是 IE8,离真正的 ES6 也还很遥远。在其他领域,比如手机游戏领
域,cocos2d-js v3.0 使用的脚本引擎是 SpiderMonkey v28,因此情况要好很多,但是周边的一些
工具,比如 closure compiler 不能很好地压缩和优化 ES6,当然你可以采用转换工具先将 ES6 转
成 ES5,然后再做压缩和优化,但是这多出来的一步造成更多出错的可能,而且和享受 ES6 的
语法糖的快乐相比,开销有点大——如果无论如何需要再转一步,那么为什么我们不干脆考虑
TypeScript 或者其他选择呢?
为什么会选择使用 ES6 的 Promise,那是因为 Promise 算是比较好解决异步嵌套问题的方案,
另外 Promise 本身在低版本下也有比较好的 polyfill 实现(https://github.com/jakearchibald/es6-
promise),对于我和一些前端工程师来说,是十分乐意为将来去写一些能够向前兼容的符合
标准的代码的。
目前这个阶段,前端学习 ES6,并不意味着能够很快将 ES6 的好处带到工作中,因为我们毕竟
还受到现在的浏览器环境的制约。但是,即使单纯从学习一门编程语言的核心 API 的角度来说,
ES6 也是值得学习的。它的很多新特性,真正涉及现代编程语言概念中很流行的部分,不管是
解构赋值还是迭代器或者 yield,都是超棒超赞的思想,不但易于理解,也能节省很多键盘操作,
而另一些诸如 const、作用域之类的设定,则让脚本引擎代替程序员人肉检查做更多的事情,
让我们最终上线的代码变得更加安全和更加优美。
不管怎样,ES6 代表着一种前端的未来,这种未来,无疑能让前端工程师们工作得更高效,也
更有乐趣。更进一步说,ECMAScript 还是开放的标准,对这门语言的新特性,有什么好的想法,
VI
推荐序 2
都是有机会提交为标准的,也就是说,前端程序员的未来,是由我们前端程序员自己来创造的,
还有什么是比自由更加美好的呢?所以,为了未来,加油!
360 奇舞团团长 月影
吴亮(网名月影),先后在微软亚洲研究院做过访问学生,在金蝶软件有限公司
担任过核心开发工程师、设计师和项目经理,在百度电子商务事业部担任过 Web 开
发项目经理。现任奇虎 360 高级技术经理,360 前端团队奇舞团负责人。多年来致力
于 JavaScript 技术和 Web 标准的推广,活跃于国内各技术社区,现为 w3ctech 顾问。
推荐序 3
同大多数读者一样,我最早看到阮一峰先生的文字是在其博客上。他的第一篇博文于 2003 年
写就,迄今已有 1500 多篇文章,可谓高产。阮先生并非计算机相关专业,但这一点并没有妨
碍他从事技术写作,其文字朴实,思路清晰,所有人都能看懂,更能感受到他写文章的用心程
度,而这本书完美地体现了他的一贯风格。另外,这本书是开源作品,也很好地践行了他一贯
的贡献原则。
自我写下第一行前端代码到现在已经十来年了,前端的基础设施也发生了巨大的变化。变化最
大的还是浏览器环境,从原来烂熟 IE6 的各种 bug 和 hack,到现在 IE6 已经完全不在我的考虑
范围内。其次是前端的工程化程度,2011 年,我做 FIS(http://fis.baidu.com)时,完全没想到
前端的工程化进展会如此之快。而变化最慢的,要数语言本身了,1999 年发布的 ECMAScript
3.0 其实相当于第 1 版;十年后的 2009 年,才发布第 2 版:ECMAScript 5.0;预计 ECMAScript
6 要到 2015 年发布。
我的一贯主张是,要学好 JavaScript,ECMAScript 标准比什么书都强。在标准中,已经用最严
谨的语言和最完美的角度展现了语言的实质和特性。理解语言的本质后,你已经从沙堆里挑出
了珍珠,能经受得起时光的磨砺。
我从 2009 年开始正式接触 ECMAScript 规范,当时我在写百度的 JavaScript 基础库 Tangram 1.0,
ECMAScript 5 还处于草案状态。我自己打印了一本小册子,上下班时在地铁上慢慢看。才知道
有很多问题在网络上被包装了太多次,解释得千奇百怪,但用规范的语言来描述,竟是如此简单。
ECMAScript 标准经历了很多变故——尤其是 ECMAScript 4 那次——也从语言的角度反映了各
大厂商之间的立场差异。不过,ECMAScript 5 的正式发布和发展,为所有 Web 开发者奠定了
稳定的基础,尽管浏览器之间存在大量差异,尤其是 DOM,但在 JavaScript 语言层面,都相对
严格地遵循着 ECMAScript 5 的规范。
JavaScript 遵守“一个 JavaScript”的原则,所有版本都需要向后兼容。Web 语言的解释器版本
不是由开发者而是由用户决定的,所以 JavaScript 无法像 Python、Ruby、Perl 那样,发布一
VIII
推荐序 3
个不向下兼容的大版本,这也就是 ECMAScript 4 失败的根源,由于它会导致大量已有网页的
“bug”,浏览器厂商会强烈反对。当然,ECMAScript 6 的 strict mode 也在尝试逐步淘汰一些
不良实践。
ECMAScript 6 相比 5,有了很大的进步。经过这次改进,JavaScript 语法更精简,变得更有表现
力了;在严格模式下,开发者受到了适当而必要的约束;新增了几种数据类型(map、set)和
函数能力(Generator、迭代器);进一步强化了 JavaScript 的特点(promise、proxy);并且让
JavaScript能适用于更大型的程序开发(modules、class)。更重要的是,这个规范会被浏览器厂商、
不同的平台广泛支持。
实际上,所有的语言改进都是从使用者的最佳实践中提炼出来的。JavaScript 的约束一直很
少,这一灵活性让开发者能相当自由地积累形形色色的使用经验和实践,也就是说,我们所有
ECMAScript 的使用者,也是其标准的间接贡献者。
百度高级工程师,前端通用组技术负责人 雷志兴
雷志兴(网名 berg),资深工程师,2007 年加入百度工作至今,负责过多项前端
基础技术、架构的设计和搭建;骑行爱好者,行程万余公里;微信公众号“行云出岫”
(DevLife)的维护者。
前言
2012 年年底,我开始动手做一个开源项目《JavaScript 标准参考教程》(https://github.com/
ruanyf/jstutorial)。原来的设想是将自己的学习笔记整理成一本书,哪里料到,这个项目不断膨胀,
最后变成了关于 ECMAScript 5 及其外围 API 的全面解读和参考手册,写了一年多还没写完。
那个项目的最后一章就是ECMAScript 6的语法简介。那一章也是越写越长,最后我不得不决定,
把它独立出来,作为一个新项目,也就是您现在看到的这本书。
JavaScript 已经是互联网开发的第一大语言,而且正在变成一种全领域的语言。著名程序员 Jeff
Atwood 甚至提出了一条“Atwood 定律”:“所有可以用 JavaScript 编写的程序,最终都会出
现 JavaScript 的版本。”(Any application that can be written in JavaScript will eventually be written
in JavaScript.)
ECMAScript 正是 JavaScript 的国际标准,这就决定了该标准的重要性。而 ECMAScript 6 是
ECMAScript 历史上最大的一次版本升级,在语言的各个方面都有极大的变化,即使是熟练的
JavaScript 程序员,也需要重新学习。由于 ES6 的设计目标是企业级开发和大型项目,所以可
以预料,除了互联网开发者,将来还会有大量应用程序开发者(甚至操作系统开发者)成为
ES6 的学习者。
我写作这本书的目标,就是想为上面这些学习者,提供一本篇幅较短、简明易懂、符合中文表
达习惯的 ES6 教程。它由浅入深、循序渐进,既有重要概念的讲解,又有 API 接口的罗列,便
于日后当作参考手册查阅,还提供大量示例代码,让读者不仅一看就懂,还能举一反三,直接
复制用于实际项目之中。
需要声明的是,为了突出重点,本书只涉及 ES6 与 ES5 的不同之处,不对 JavaScript 已有的语
法做全面讲解,毕竟市场上这样的教程已有很多了。因此,本书不是 JavaScript 入门教材,不
适合初学者。阅读本书之前,需要对 JavaScript 的基本语法有所了解。
X
前言
我本人也是一个 ES6 的学习者,不敢说自己有多高的水平,只是较早地接触了这个主题,持续
地读了许多资料,追踪标准的进展,做了详细的笔记而已。虽然我尽了最大努力,并且原稿在
GitHub 上公开后,已经得到了大量的勘误,但是本书的不如人意之处恐怕还是有不少。
欢迎大家访问本书的项目主页(https://github.com/ruanyf/es6tutorial),提出意见,以及提交
pull request。这些都会包括在本书的下一个版本中。
阮一峰
2014 年 6 月 4 日,写于上海

目录

目录 阅读
第1章 ECMAScript 6 简介
第2章 let 和 const 命令
第3章 变量的解构赋值
第4章 字符串的扩展
第5章 正则的扩展
第6章 数值的扩展
第7章 数组的扩展
第8章 函数的扩展
第9章 对象的扩展
第 10 章 Symbol
第 11 章 Proxy 和 Reflect
第 12 章 二进制数组
第 13 章 Set 和 Map 数据结构
第 14 章 Iterator 和 for...of 循环
第 15 章 Generator 函数
第 16 章 Promise 对象
第 17 章 异步操作和 async 函数
第 18 章 Class
第 19 章 修饰器
第 20 章 Module
第 21 章 编程风格
第 22 章 读懂 ECMAScript 规格
第 23 章 参考链接

本书勘误

印次
  • 页码:223  •  行数:12  •  印次: 7

    function asyncJob(){} => function* asyncJob(){}

    Sys0 提交于 2018/8/14 22:46:41
    张春雨 确认于 2018/8/21 15:29:32

读者评论

  • 本书提供的示例代码及资源文件为什么在“下载资源”处没有呢?

    李秀秀发表于 2017/10/17 19:45:31
  • 前面几章关于基本语法及编码规范的对初学者帮助比较大,后几章属于中级产物,ES6的转换到普通浏览器的流程用起来很顺手。

    J技术宅发表于 2017/3/7 17:49:28
  • ES6很强大,书写的简明易懂,作为一名Python,ES的语法看着很舒服,细节与参引的翻译都很到位。

    LYXLYX发表于 2017/3/7 17:25:28
  • ES6的很多特性都是经过多年实际项目总结出来的,也填了ES5的那么多坑,非常值得学习。

    Loki发表于 2017/3/1 13:47:00

下载资源

电子书版本

  • Epub
  • Mobi

相关博文

  • let和const命令

    Jessica瑾妞 2017-02-20

    let命令基本用法基本用法 ES6新增了let命令,用于声明变量。其用法类似于var,但是所声明的变量只在let命令所在的代码块内有效。 { let a = 10; var b = 1; } a // ReferenceError: ...

    Jessica瑾妞 2017-02-20
    289 0 0 0

相关图书

业务可视化分析: 从问题到图形的Tableau方法

对广大的业务分析师而言,业务分析(或者称为商业分析)应该从业务和问题出发,可视化是实现的方法,辅助决策是最终的目的。本书以业务分析为起点,介绍了“样本范围、问题...

¥139.00

Python数据可视化之美

张杰 (作者)

本书主要介绍如何使用Python 中的matplotlib、Seaborn、plotnine、Basemap 等包绘制专业图表。本书首先介绍Python 语言编...

¥90.30

Python数据可视化之matplotlib实践

刘大成 (作者)

本书借助Matplotlib讲解开展Python数据可视化实践所需要掌握的关键知识和技能。本书主要由Matplotlib入门、精进、演练和拓展四部分组成。同时,...

¥29.00

Meteor全栈开发

杜亦舒 (作者)

本书全面介绍了新一代全栈开发平台 Meteor。书中首先简要介绍了 Meteor 的概念和特性,然后通过各种示例讲解 Meteor 的用法,再用案例实践的方式综...

¥48.00

前端函数式攻城指南

欧阳继超 (作者)

在后端,函数式语言层出不穷。在前端,函数式最后的边界也已经被渐渐打破。Scala的Scala.js、Clojure的ClojureScript都试图同构移向前端...

¥39.00

Egret——HTML5游戏开发指南

张鑫磊 (作者)

本书向大家介绍HTML5游戏行业最新动态以及未来发展方向,同时也提及了当前HTML5技术相关市场。全书针对Egret HTML5游戏做了全方位讲解,涉及游戏中的...

¥65.00