Back to ECMAScript

See Also JavaScript语言参考Node.js

ECMAScript 6

ECMAScript第六版是JS有史以来最实质的升级,最初称为ECMAScript 6 (ES6),后来更名为ECMAScript 2015 (ES2015)。

新的语言特性涵盖范围甚广,小到受欢迎的语法糖,例如箭头函数(arrow functions)和简单的字符串插值(string interpolation),大到烧脑的新概念,例如代理(proxies)和生成器(generators)。为编写复杂的应用程序(包括类和模块)添加了重要的新语法,但在语义上与ECMAScript 5严格模式相同。它也被称为"ES6 Harmony"。

ES6 既是一个历史名词,也是一个泛指,含义是 5.1 版以后的 JavaScript 的下一代标准,涵盖了 ES2015、ES2016、ES2017 等等,而 ES2015 则是正式名称,特指该年发布的正式版本的语言标准。我们提到 ES6 的地方,一般是指 ES2015 标准,但有时也是泛指“下一代 JavaScript 语言”。

1. Global Objects

1.1. Array

Array 对象是用于构造数组的全局对象,JavaScript 数组则是类似于列表的高阶对象。

1.1.1. Array.prototype.map()

map() 方法创建一个新数组,其结果是该数组中的每个元素都调用一个提供的函数后返回的结果。

let numbers = [1, 5, 10, 15];
let doubles = numbers.map( x => x ** 2);

// doubles is now [1, 25, 100, 225]
// numbers is still [1, 5, 10, 15]

1.2. String

ES6 加强了对 Unicode 的支持,并且扩展了字符串对象

JavaScript 共有 6 种方法可以表示一个字符

增加3中包含判断方法

模板字符串(template string)是增强版的字符串,用反引号(`)标识。它可以当作普通字符串使用,也可以用来定义多行字符串,或者在字符串中嵌入变量。

1.3. RegExp

RegExp 构造函数创建了一个正则表达式对象,用于将文本与一个模式匹配。

直接量语法: /pattern/attributes

创建RegExp 对象的语法:new RegExp(pattern, attributes);

2. Expressions & Operators

let和const

3. Statements and Declarations

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Statements

4. Functions

4.1. Arrow Functions

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Functions/Arrow_functions

箭头函数表达式的语法比函数表达式更短,并且不绑定自己的this,arguments,super或 new.target。这些函数表达式最适合用于非方法函数,并且它们不能用作构造函数。

4.2. function*

生成器函数是一种异步编程解决方案,规范出自 ECMAScript 2015 (6th Edition, ECMA-262)。

语法上,function* 这种声明方式(function关键字后跟一个星号)会定义一个生成器函数 (generator function),它返回一个 Generator 对象;也可以使用构造函数 GeneratorFunction 或 function* expression 定义生成器函数

形式上,Generator 函数是一个普通函数,但是有两个特征。一是,function关键字与函数名之间有一个星号;二是,函数体内部使用yield表达式,定义不同的内部状态(yield在英语里的意思就是“产出”)。

Code

Doc MDN / http://es6.ruanyifeng.com/#docs/generator

意义:

4.3. async

async function 声明将定义一个返回 AsyncFunction 对象的异步函数。还可以使用 异步函数表达式 来定义异步函数。// Since ES 2017

async 函数是什么?一句话,它就是 Generator 函数的语法糖:将 Generator 函数的星号(*)替换成async,将yield替换成await

Code

Doc MDN / http://es6.ruanyifeng.com/#docs/async

5. Classes

5.1. Promise

Promise 是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大。它由社区最早提出和实现,ES2015 将其写进了语言标准,统一了用法,原生提供了Promise对象。

所谓Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果。从语法上说,Promise 是一个对象,从它可以获取异步操作的消息。Promise 提供统一的 API,各种异步操作都可以用同样的方法进行处理。

Code https://github.com/twotwo/practice-nodejs/tree/master/hello_sequelize/services

Doc MDN / http://es6.ruanyifeng.com/#docs/promise

6. Errors

7. Tools

7.1. Node.js

Node.js是JavaScript语言的服务器运行环境,对ES6的支持度比浏览器更高。通过Node,可以体验更多ES6的特性。建议使用版本管理工具nvm,来安装Node,因为可以自由切换版本。

7.2. Babel

Babel是一个广泛使用的ES6转码器,可以将ES6代码转为ES5代码,从而在现有环境执行。

8. Reference

MainWiki: ECMAScript_6 (last edited 2017-01-03 18:01:16 by twotwo)