• 参考链接
    • 官方文件
    • 综合介绍
    • let 和 const
    • 解构赋值
    • 字符串
    • 正则
    • 数值
    • 数组
    • 函数
    • 对象
    • Symbol
    • Set 和 Map
    • Proxy 和 Reflect
    • Promise 对象
    • Iterator
    • Generator
    • 异步操作和 Async 函数
    • Class
    • Decorator
    • Module
    • 二进制数组
    • SIMD
    • 工具

    参考链接

    官方文件

    • ECMAScript® 2015 Language Specification: ECMAScript 2015 规格
    • ECMAScript® 2016 Language Specification: ECMAScript 2016 规格
    • ECMAScript® 2017 Language Specification:ECMAScript 2017 规格(草案)
    • ECMAScript Current Proposals: ECMAScript 当前的所有提案
    • ECMAScript Active Proposals: 已经进入正式流程的提案
    • ECMAscript proposals:从阶段 0 到阶段 4 的所有提案列表
    • TC39 meeting agendas: TC39 委员会历年的会议记录
    • ECMAScript Daily: TC39 委员会的动态
    • The TC39 Process: 提案进入正式规格的流程
    • TC39: A Process Sketch, Stages 0 and 1: Stage 0 和 Stage 1 的含义
    • TC39 Process Sketch, Stage 2: Stage 2 的含义

    综合介绍

    • Axel Rauschmayer, Exploring ES6: Upgrade to the next version of JavaScript: ES6 的专著,本书的许多代码实例来自该书
    • Sayanee Basu, Use ECMAScript 6 Today
    • Ariya Hidayat, Toward Modern Web Apps with ECMAScript 6
    • Dale Schouten, 10 Ecmascript-6 tricks you can perform right now
    • Colin Toh, Lightweight ES6 Features That Pack A Punch: ES6 的一些“轻量级”的特性介绍
    • Domenic Denicola, ES6: The Awesome Parts
    • Nicholas C. Zakas, Understanding ECMAScript 6
    • Justin Drake, ECMAScript 6 in Node.JS
    • Ryan Dao, Summary of ECMAScript 6 major features
    • Luke Hoban, ES6 features: ES6 新语法点的罗列
    • Traceur-compiler, Language Features: Traceur 文档列出的一些 ES6 例子
    • Axel Rauschmayer, ECMAScript 6: what’s next for JavaScript?: 关于 ES6 新增语法的综合介绍,有很多例子
    • Axel Rauschmayer, Getting started with ECMAScript 6: ES6 语法点的综合介绍
    • Toby Ho, ES6 in io.js
    • Guillermo Rauch, ECMAScript 6
    • Charles King, The power of ECMAScript 6
    • Benjamin De Cock, Frontend Guidelines: ES6 最佳实践
    • Jani Hartikainen, ES6: What are the benefits of the new features in practice?
    • kangax, Javascript quiz. ES6 edition: ES6 小测试
    • Jeremy Fairbank, HTML5DevConf ES7 and Beyond!: ES7 新增语法点介绍

    let 和 const

    • Kyle Simpson, For and against let: 讨论 let 命令的作用域
    • kangax, Why typeof is no longer “safe”: 讨论在块级作用域内,let 命令的变量声明和赋值的行为
    • Axel Rauschmayer, Variables and scoping in ECMAScript 6: 讨论块级作用域与 let 和 const 的行为
    • Nicolas Bevacqua, ES6 Let, Const and the “Temporal Dead Zone” (TDZ) in Depth
    • acorn, Function statements in strict mode: 块级作用域对严格模式的函数声明的影响
    • Axel Rauschmayer, ES proposal: global: 顶层对象global

    解构赋值

    • Nick Fitzgerald, Destructuring Assignment in ECMAScript 6: 详细介绍解构赋值的用法
    • Nicholas C. Zakas, ECMAScript 6 destructuring gotcha

    字符串

    • Nicholas C. Zakas, A critical review of ECMAScript 6 quasi-literals
    • Mozilla Developer Network, Template strings
    • Addy Osmani, Getting Literal With ES6 Template Strings: 模板字符串的介绍
    • Blake Winton, ES6 Templates: 模板字符串的介绍
    • Peter Jaszkowiak, @PitaJ/how-to-write-a-template-compiler-in-javascript-f174df6f32f">How to write a template compiler in JavaScript: 使用模板字符串,编写一个模板编译函数
    • Axel Rauschmayer, ES.stage3: string padding

    正则

    • Mathias Bynens, Unicode-aware regular expressions in ES6: 详细介绍正则表达式的 u 修饰符
    • Axel Rauschmayer, New regular expression features in ECMAScript 6:ES6 正则特性的详细介绍
    • Yang Guo, RegExp lookbehind assertions:介绍后行断言
    • Axel Rauschmayer, ES proposal: RegExp named capture groups: 具名组匹配的介绍

    数值

    • Nicolas Bevacqua, ES6 Number Improvements in Depth
    • Axel Rauschmayer, ES proposal: arbitrary precision integers

    数组

    • Axel Rauschmayer, ECMAScript 6’s new array methods: 对 ES6 新增的数组方法的全面介绍
    • TC39, Array.prototype.includes: 数组的 includes 方法的规格
    • Axel Rauschmayer, ECMAScript 6: holes in Arrays: 数组的空位问题

    函数

    • Nicholas C. Zakas, Understanding ECMAScript 6 arrow functions
    • Jack Franklin, Real Life ES6 - Arrow Functions
    • Axel Rauschmayer, Handling required parameters in ECMAScript 6
    • Dmitry Soshnikov, ES6 Notes: Default values of parameters: 介绍参数的默认值
    • Ragan Wald, Destructuring and Recursion in ES6: rest 参数和扩展运算符的详细介绍
    • Axel Rauschmayer, The names of functions in ES6: 函数的 name 属性的详细介绍
    • Kyle Simpson, Arrow This: 箭头函数并没有自己的 this
    • Derick Bailey, Do ES6 Arrow Functions Really Solve “this” In JavaScript?:使用箭头函数处理 this 指向,必须非常小心
    • Mark McDonnell, Understanding recursion in functional JavaScript programming: 如何自己实现尾递归优化
    • Nicholas C. Zakas, The ECMAScript 2016 change you probably don’t know: 使用参数默认值时,不能在函数内部显式开启严格模式
    • Axel Rauschmayer, ES proposal: optional catch binding

    对象

    • Addy Osmani, Data-binding Revolutions with Object.observe(): 介绍 Object.observe()的概念
    • Sella Rafaeli, Native JavaScript Data-Binding: 如何使用 Object.observe 方法,实现数据对象与 DOM 对象的双向绑定
    • Axel Rauschmayer, __proto__ in ECMAScript 6
    • Axel Rauschmayer, Enumerability in ECMAScript 6
    • Axel Rauschmayer, ES proposal: Object.getOwnPropertyDescriptors()
    • TC39, Object.getOwnPropertyDescriptors Proposal

    Symbol

    • Axel Rauschmayer, Symbols in ECMAScript 6: Symbol 简介
    • MDN, Symbol: Symbol 类型的详细介绍
    • Jason Orendorff, ES6 In Depth: Symbols
    • Keith Cirkel, Metaprogramming in ES6: Symbols and why they’re awesome: Symbol 的深入介绍
    • Axel Rauschmayer, Customizing ES6 via well-known symbols
    • Derick Bailey, Creating A True Singleton In Node.js, With ES6 Symbols
    • Das Surma, How to read web specs Part IIa – Or: ECMAScript Symbols: 介绍 Symbol 的规格

    Set 和 Map

    • Mozilla Developer Network, WeakSet:介绍 WeakSet 数据结构
    • Dwayne Charrington, What Are Weakmaps In ES6?: WeakMap 数据结构介绍
    • Axel Rauschmayer, ECMAScript 6: maps and sets: Set 和 Map 结构的详细介绍
    • Jason Orendorff, ES6 In Depth: Collections:Set 和 Map 结构的设计思想
    • Axel Rauschmayer, Converting ES6 Maps to and from JSON: 如何将 Map 与其他数据结构互相转换

    Proxy 和 Reflect

    • Nicholas C. Zakas, Creating defensive objects with ES6 proxies
    • Axel Rauschmayer, Meta programming with ECMAScript 6 proxies: Proxy 详解
    • Daniel Zautner, Meta-programming JavaScript Using Proxies: 使用 Proxy 实现元编程
    • Tom Van Cutsem, Harmony-reflect: Reflect 对象的设计目的
    • Tom Van Cutsem, Proxy Traps: Proxy 拦截操作一览
    • Tom Van Cutsem, Reflect API
    • Tom Van Cutsem, Proxy Handler API
    • Nicolas Bevacqua, ES6 Proxies in Depth
    • Nicolas Bevacqua, ES6 Proxy Traps in Depth
    • Nicolas Bevacqua, More ES6 Proxy Traps in Depth
    • Axel Rauschmayer, Pitfall: not all objects can be wrapped transparently by proxies
    • Bertalan Miklos, Writing a JavaScript Framework - Data Binding with ES6 Proxies: 使用 Proxy 实现观察者模式
    • Keith Cirkel, Metaprogramming in ES6: Part 2 - Reflect: Reflect API 的详细介绍

    Promise 对象

    • Jake Archibald, JavaScript Promises: There and back again
    • Tilde, rsvp.js
    • Sandeep Panda, An Overview of JavaScript Promises: ES6 Promise 入门介绍
    • Dave Atchley, ES6 Promises: Promise 的语法介绍
    • Axel Rauschmayer, ECMAScript 6 promises (2/2): the API: 对 ES6 Promise 规格和用法的详细介绍
    • Jack Franklin, Embracing Promises in JavaScript: catch 方法的例子
    • Ronald Chen, @pyrolistical/how-to-get-out-of-promise-hell-8c20e0ab0513#.2an1he6vf">How to escape Promise Hell: 如何使用Promise.all方法的一些很好的例子
    • Jordan Harband, proposal-promise-try: Promise.try() 方法的提案
    • Sven Slootweg, What is Promise.try, and why does it matter?: Promise.try() 方法的优点
    • Yehuda Katz, TC39: Promises, Promises: Promise.try() 的用处

    Iterator

    • Mozilla Developer Network, Iterators and generators
    • Mozilla Developer Network, The Iterator protocol
    • Jason Orendorff, ES6 In Depth: Iterators and the for-of loop: 遍历器与 for…of 循环的介绍
    • Axel Rauschmayer, Iterators and generators in ECMAScript 6: 探讨 Iterator 和 Generator 的设计目的
    • Axel Rauschmayer, Iterables and iterators in ECMAScript 6: Iterator 的详细介绍
    • Kyle Simpson, Iterating ES6 Numbers: 在数值对象上部署遍历器

    Generator

    • Matt Baker, Replacing callbacks with ES6 Generators
    • Steven Sanderson, Experiments with Koa and JavaScript Generators
    • jmar777, What’s the Big Deal with Generators?
    • Marc Harter, Generators in Node.js: Common Misconceptions and Three Good Use Cases: 讨论 Generator 函数的作用
    • StackOverflow, ES6 yield : what happens to the arguments of the first call next()?: 第一次使用 next 方法时不能带有参数
    • Kyle Simpson, ES6 Generators: Complete Series: 由浅入深探讨 Generator 的系列文章,共四篇
    • Gajus Kuizinas, The Definitive Guide to the JavaScript Generators: 对 Generator 的综合介绍
    • Jan Krems, Generators Are Like Arrays: 讨论 Generator 可以被当作数据结构看待
    • Harold Cooper, Coroutine Event Loops in Javascript: Generator 用于实现状态机
    • Ruslan Ismagilov, learn-generators: 编程练习,共 6 道题
    • Steven Sanderson, Experiments with Koa and JavaScript Generators: Generator 入门介绍,以 Koa 框架为例
    • Mahdi Dibaiee, ES7 Array and Generator comprehensions:ES7 的 Generator 推导
    • Nicolas Bevacqua, ES6 Generators in Depth
    • Axel Rauschmayer, ES6 generators in depth: Generator 规格的详尽讲解
    • Derick Bailey, Using ES6 Generators To Short-Circuit Hierarchical Data Iteration:使用 for…of 循环完成预定的操作步骤

    异步操作和 Async 函数

    • Luke Hoban, Async Functions for ECMAScript: Async 函数的设计思想,与 Promise、Gernerator 函数的关系
    • Jafar Husain, Asynchronous Generators for ES7: Async 函数的深入讨论
    • Nolan Lawson, Taming the asynchronous beast with ES7: async 函数通俗的实例讲解
    • Jafar Husain, Async Generators: 对 async 与 Generator 混合使用的一些讨论
    • Daniel Brain, @bluepnume/learn-about-promises-before-you-start-using-async-await-eb148164a9c8">Understand promises before you start using async/await: 讨论 async/await 与 Promise 的关系
    • Jake Archibald, Async functions - making promises friendly
    • Axel Rauschmayer, ES proposal: asynchronous iteration: 异步遍历器的详细介绍
    • Dima Grossman, How to write async await without try-catch blocks in Javascript: 除了 try/catch 以外的 async 函数内部捕捉错误的方法

    Class

    • Sebastian Porto, ES6 classes and JavaScript prototypes: ES6 Class 的写法与 ES5 Prototype 的写法对比
    • Jack Franklin, An introduction to ES6 classes: ES6 class 的入门介绍
    • Axel Rauschmayer, ECMAScript 6: new OOP features besides classes
    • Axel Rauschmayer, Classes in ECMAScript 6 (final semantics): Class 语法的详细介绍和设计思想分析
    • Eric Faust, ES6 In Depth: Subclassing: Class 语法的深入介绍
    • Nicolás Bevacqua, Binding Methods to Class Instance Objects: 如何绑定类的实例中的 this

    Decorator

    • Maximiliano Fierro, Declarative vs Imperative: Decorators 和 Mixin 介绍
    • Justin Fagnani, “Real” Mixins with JavaScript Classes: 使用类的继承实现 Mixin
    • Addy Osmani, Exploring ES2016 Decorators: Decorator 的深入介绍
    • Sebastian McKenzie, Allow decorators for functions as well: 为什么修饰器不能用于函数
    • Maximiliano Fierro, Traits with ES7 Decorators: Trait 的用法介绍
    • Jonathan Creamer: Using ES2016 Decorators to Publish on an Event Bus: 使用修饰器实现自动发布事件

    Module

    • Jack Franklin, JavaScript Modules the ES6 Way: ES6 模块入门
    • Axel Rauschmayer, ECMAScript 6 modules: the final syntax: ES6 模块的介绍,以及与 CommonJS 规格的详细比较
    • Dave Herman, Static module resolution: ES6 模块的静态化设计思想
    • Jason Orendorff, ES6 In Depth: Modules: ES6 模块设计思想的介绍
    • Ben Newman, The Importance of import and export: ES6 模块的设计思想
    • ESDiscuss, Why is “export default var a = 1;” invalid syntax?
    • Bradley Meck, ES6 Module Interoperability: 介绍 Node 如何处理 ES6 语法加载 CommonJS 模块
    • Axel Rauschmayer, Making transpiled ES modules more spec-compliant: ES6 模块编译成 CommonJS 模块的详细介绍
    • Axel Rauschmayer, ES proposal: import() – dynamically importing ES modules: import() 的用法
    • Node EPS, ES Module Interoperability: Node 对 ES6 模块的处理规格

    二进制数组

    • Ilmari Heikkinen, Typed Arrays: Binary Data in the Browser
    • Khronos, Typed Array Specification
    • Ian Elliot, Reading A BMP File In JavaScript
    • Renato Mangini, How to convert ArrayBuffer to and from String
    • Axel Rauschmayer, Typed Arrays in ECMAScript 6
    • Axel Rauschmayer, ES proposal: Shared memory and atomics
    • Lin Clark, Avoiding race conditions in SharedArrayBuffers with Atomics: Atomics 对象使用场景的解释
    • Lars T Hansen, Shared memory - a brief tutorial

    SIMD

    • TC39, SIMD.js Stage 2
    • MDN, SIMD
    • TC39, ECMAScript SIMD
    • Axel Rauschmayer, JavaScript gains support for SIMD

    工具

    • Babel, Babel Handbook: Babel 的用法介绍
    • Google, traceur-compiler: Traceur 编译器
    • Casper Beyer, ECMAScript 6 Features and Tools
    • Stoyan Stefanov, Writing ES6 today with jstransform
    • ES6 Module Loader, ES6 Module Loader Polyfill: 在浏览器和 node.js 加载 ES6 模块的一个库,文档里对 ES6 模块有详细解释
    • Paul Miller, es6-shim: 一个针对老式浏览器,模拟 ES6 部分功能的垫片库(shim)
    • army8735, Javascript Downcast: 国产的 ES6 到 ES5 的转码器
    • esnext, ES6 Module Transpiler:基于 node.js 的将 ES6 模块转为 ES5 代码的命令行工具
    • Sebastian McKenzie, BabelJS: ES6 转译器
    • SystemJS, SystemJS: 在浏览器中加载 AMD、CJS、ES6 模块的一个垫片库
    • Modernizr, HTML5 Cross Browser Polyfills: ES6 垫片库清单
    • Facebook, regenerator: 将 Generator 函数转为 ES5 的转码器