參考鏈接
官方文件
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
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 新增語法點介紹
Timothy Gu, How to Read the ECMAScript Specification: 如何讀懂 ES6 規格
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
Mathias Bynens, A horrifying
globalThis
polyfill in universal JavaScript:如何寫 globalThis 的墊片庫
解構賦值
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, 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: 具名組匹配的介紹
Mathias Bynens, ECMAScript regular expressions are getting better!: 介紹 ES2018 添加的多項正則語法
數值
Nicolas Bevacqua, ES6 Number Improvements in Depth
Axel Rauschmayer, ES proposal: arbitrary precision integers
Mathias Bynens, BigInt: arbitrary-precision integers in JavaScript
數組
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
Cynthia Lee, When you should use ES6 arrow functions?—?and when you shouldn’t: 討論箭頭函數的適用場合
Eric Elliott, What is this?: 箭頭函數內部的 this 的解釋。
對象
Addy Osmani, Data-binding Revolutions with Object.observe(): 介紹 Object.observe()的概念
Sella Rafaeli, Native JavaScript Data-Binding: 如何使用 Object.observe 方法,實現數據對象與 DOM 對象的雙向綁定
Axel Rauschmayer,
__proto__
in ECMAScript 6Axel Rauschmayer, Enumerability in ECMAScript 6
Axel Rauschmayer, ES proposal: Object.getOwnPropertyDescriptors()
David Titarenco, How Spread Syntax Breaks JavaScript: 擴展運算符的一些不合理的地方
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
Jake Archibald, Tasks, microtasks, queues and schedules
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, 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, 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 函數內部捕捉錯誤的方法
Mostafa Gaafa, 6 Reasons Why JavaScript’s Async/Await Blows Promises Away: Async 函數的6個好處
Mathias Bynens, Asynchronous stack traces: why await beats Promise#then(): 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
Jamie Kyle, JavaScript's new #private class fields:私有屬性的介紹。
Mathias Bynens, Public and private class fields:實例屬性的新寫法的介紹。
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 模塊的處理規格
Dan Fabulich, Why CommonJS and ES Modules Can’t Get Along: Node.js 對 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
James Milner, The Return of SharedArrayBuffers and Atomics
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 的轉碼器