√ 国内ECMAScript之作:ECMAScript标准,用严谨的语言和完美的角度展现了语言的实质和特性。
√ 精通下一代JavaScript:ES6是会被不同浏览器厂商、不同平台广泛支持的JavaScript语言规范;单纯从语言学习角度来说,ES6也值得学习——其诸多新特性真正涉及现代编程语言概念中的流行思想,易于理解且节省键盘操作;其一些设定,可让脚本引擎代替程序员工作,让上线代码更安全和优美。
√ 网页制作、Node.js开发必会语法:ECMAScript 6的Javascript语法更精简、更有表现力;新增数据类型和函数能力;强化了Javascript特点;让Javascript适于更大型的程序开发。
√ 阮一峰“JavaScript标准参考教程”之五:①《JavaScript核心语法与标准库》→②《JavaScript的DOM操作与jQuery指南》→③《JavaScript的HTML 5应用》→④《JavaScript的Web开发入门》→⑤→⑥《Node.js入门》
√ 一线互联网公司全力拥抱新标准:百度前端负责人、腾讯前端负责人、360前端负责人各自作序力荐
《ECMAScript 6入门(全彩)》全面介绍了ECMAScript6新引入的语法特性,覆盖了ECMAScript 6 与 ECMAScript 5 的所有不同之处,对涉及的语法知识给予了详细介绍,并给出了大量简洁易懂的示例代码。
2012年年底,我开始动手做一个开源项目《JavaScript标准参考教程》(https://github.com/ruanyf/jstutorial)。原来的设想是将自己的学习笔记整理成一本书,哪里料到,这个项目不断膨胀,最后变成了关于ECMAScript5及其外围API的全面解读和参考手册,写了一年多还没写完。
那个项目的最后一章就是ECMAScript6的语法简介。那一章也是越写越长,最后我不得不决定,把它独立出来,作为一个新项目,也就是您现在看到的这本书。
JavaScript已经是互联网开发的第一大语言,而且正在变成一种全领域的语言。著名程序员JefAtwood甚至提出了一条“Atwood定律”:“所有可以用JavaScript编写的程序,最终都会出现JavaScript的版本。”(AnyapplicationthatcanbewritteninJavaScriptwilleventuallybewritteninJavaScript.)
ECMAScript正是JavaScript的国际标准,这就决定了该标准的重要性。而ECMAScript6是ECMAScript历史上最大的一次版本升级,在语言的各个方面都有极大的变化,即使是熟练的JavaScript程序员,也需要重新学习。由于ES6的设计目标是企业级开发和大型项目,所以可以预料,除了互联网开发者,将来还会有大量应用程序开发者(甚至操作系统开发者)成为ES6的学习者。
我写作这本书的目标,就是想为上面这些学习者,提供一本篇幅较短、简明易懂、符合中文表达习惯的ES6教程。它由浅入深、循序渐进,既有重要概念的讲解,又有API接口的罗列,便于日后当作参考手册查阅,还提供大量示例代码,让读者不仅一看就懂,还能举一反三,直接复制用于实际项目之中。
需要声明的是,为了突出重点,本书只涉及ES6与ES5的不同之处,不对JavaScript已有的语法做全面讲解,毕竟市场上这样的教程已有很多了。因此,本书不是JavaScript入门教材,不适合初学者。阅读本书之前,需要对JavaScript的基本语法有所了解。
我本人也是一个ES6的学习者,不敢说自己有多高的水平,只是较早地接触了这个主题,持续地读了许多资料,追踪标准的进展,做了详细的笔记而已。虽然我尽了最大努力,并且原稿在GitHub上公开后,已经得到了大量的勘误,但是本书的不如人意之处恐怕还是有不少。
欢迎大家访问本书的项目主页(https://github.com/ruanyf/es6tutorial),提出意见,以及提交pullrequest。这些都会包括在本书的下一个版本中。
阮一峰
2014年6月4日,写于上海
第 1 章 ECMAScript 6 简介
ECMAScript 和 JavaScript 的关系
ECMAScript 的历史
部署进度
Traceur 编译器
ECMAScript 7
第 2 章 let 和 const 命令
let 命令
块级作用域
const 命令
第 3 章 变量的解构赋值
数组的解构赋值
对象的解构赋值
用途
第 4 章 字符串的扩展
codePointAt 方法
String.fromCodePoint 方法
字符的 Unicode 表示法
正则表达式的 u 修饰符
contains, startsWith, endsWith
repeat
正则表达式的 y 修饰符
模板字符串
第 5 章 数值的扩展
二进制和八进制数值表示法
Number.isFinite, Number.isNaN
Number.parseInt, Number.parseFloat
Number.isInteger 和安全整数
Math 对象的扩展
Math.trunc
数学方法
第 6 章 数组的扩展
Array.from
Array.of
数组实例的 find 和 findIndex
数组实例的 fill
数组实例的 entries,keys 和 values
数组推导
Array.observe,Array.unobserve
第 7 章 对象的扩展
Object.is
Object.assign
__proto__ 属性,Object.setPrototypeOf,Object.getPrototypeOf
__proto__ 属性
Object.setPrototypeOf
Object.getPrototypeOf
增强的对象写法
属性名表达式
Symbol
Proxy
Object.observe,Object.unobserve
第 8 章 函数的扩展
函数参数的默认值
rest 参数
扩展运算符
箭头函数
第 9 章 Set 和 Map 数据结构
Set
Map
基本用法
属性和方法
遍历
WeakMap
第 10 章 Iterator 和 for...of 循环
Iterator(遍历器)
for...of 循环
第 11 章 Generator 函数
含义
next 方法的参数
异步操作的应用
for...of 循环
yield* 语句
第 12 章 Promise 对象
基本用法
链式操作
catch 方法:捕捉错误
Promise.all 方法
Promise.resolve 方法
async 函数
第 13 章 Class 和 Module
Class
Module 的基本用法
export 和 import
模块的整体加载
export default 语句
模块的继承
参考链接
索引
就如同大多数读者一样,我最早看到阮一峰先生的文字是在其博客上。他的一篇博文于03年写就,迄今已有1500多篇文章,可谓高产。阮先生并非计算机相关专业,但这一点并没有妨碍他从事技术写作,其文字朴实,思路清晰,所有人都能看懂,更是能感受到他写文章的用心程度,而这本书完美地体现了他的一贯风格,也很好地践行了他一贯的贡献原则。
我的一贯主张是,要学好Javascript,ECMAscript标准比什么书都强。在标准中,已经用最严谨的语言和最完美的角度展现了语言的实质和特性。理解语言的本质后,你已经从沙堆里挑出了珍珠,能经受得起时光的磨砺。
——节选自 百度前端通用组技术负责人 雷志兴/berg 为本书所作推荐序
不管怎样,ES6代表着一种前端未来,这种未来,无疑能让前端工程师们工作得更高效,也更有乐趣。更进一步说,ECMAScript还是开放的标准,对这门语言的新特性,有什么好的想法,都是有机会可以提交为标准的,也就是说,前端程序员的未来,是由我们前端程序员自己来创造的,还有什么是比自由更加美好的呢?所以,为了未来,加油~
——节选自 360奇舞团团长 吴亮/月影 为本书所作推荐序
作为一个JS开发者,实话说我并不完全认同ECMAScript6里面的很多内容(比如let语句),但是很遗憾,这个标准的制定过程没我们什么事。但是如果我们从现在开始关注国际标准,翻译标准文档,让更多人了解标准,更多公司加入标准组织、参与标准制定,也许未来的中国技术圈不但会是很多人的一个圈子,还会是很有影响力的一个圈子。
——节选自 腾讯Web前端专家/QQ空间技术总监 黄希彤/emu 为本书所作推荐序