### 彪哥

爱好前端

- ECMAScript 6 简介
- let 和 const 命令
- 变量的解构赋值
- 字符串的扩展
- 字符串的新增方法
- 正则的扩展
- 数值的扩展
- 函数的扩展
- 数组的扩展
- 对象的扩展
- 对象的新增方法
- Symbol
- Set 和 Map 数据结构
- Proxy
- Reflect
- Promise 对象
- Iterator 和 for-of 循环
- Generator 函数的语法
- Generator 函数的异步应用
- async 函数
- Class 的基本语法
- Class 的继承
- Module 的语法
- Module 的加载实现
- 编程风格
- 读懂 ECMAScript 规格
- 异步遍历器
- ArrayBuffer
- 最新提案
- 装饰器
- 函数式编程
- Mixin
- SIMD
- 参考链接
  - 官方文件
  - 综合介绍
  - let 和 const
  - 解构赋值
  - 字符串
  - 正则
  - 数值
  - 数组
  - 函数
  - 对象
  - Symbol
  - Set 和 Map
  - Proxy 和 Reflect
  - Promise 对象
  - Iterator
  - Generator
  - 异步操作和 Async 函数
  - Class
  - Decorator
  - Module
  - 二进制数组
  - SIMD
  - 工具

- 《ES6 教程》笔记

阮一峰
2020-02-09
目录

# 参考链接

# # 参考链接

## # 官方文件

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

## # 综合介绍

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

## # let 和 const

- Kyle Simpson, For and against let
  (opens new window): 讨论 let 命令的作用域
- kangax, Why typeof is no longer “safe”
  (opens new window): 讨论在块级作用域内，let 命令的变量声明和赋值的行为
- Axel Rauschmayer, Variables and scoping in ECMAScript 6
  (opens new window): 讨论块级作用域与 let 和 const 的行为
- Nicolas Bevacqua, ES6 Let, Const and the “Temporal Dead Zone” (TDZ) in Depth
  (opens new window)
- acorn, Function statements in strict mode
  (opens new window): 块级作用域对严格模式的函数声明的影响
- Axel Rauschmayer, ES proposal: global
  (opens new window): 顶层对象`global`
- Mathias Bynens, A horrifying `globalThis` polyfill in universal JavaScript
  (opens new window)：如何写 globalThis 的垫片库

## # 解构赋值

- Nick Fitzgerald, Destructuring Assignment in ECMAScript 6
  (opens new window): 详细介绍解构赋值的用法
- Nicholas C. Zakas, ECMAScript 6 destructuring gotcha
  (opens new window)

## # 字符串

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

## # 正则

- Mathias Bynens, Unicode-aware regular expressions in ES6
  (opens new window): 详细介绍正则表达式的 u 修饰符
- Axel Rauschmayer, New regular expression features in ECMAScript 6
  (opens new window)：ES6 正则特性的详细介绍
- Yang Guo, RegExp lookbehind assertions
  (opens new window)：介绍后行断言
- Axel Rauschmayer, ES proposal: RegExp named capture groups
  (opens new window): 具名组匹配的介绍
- Mathias Bynens, ECMAScript regular expressions are getting better!
  (opens new window): 介绍 ES2018 添加的多项正则语法

## # 数值

- Nicolas Bevacqua, ES6 Number Improvements in Depth
  (opens new window)
- Axel Rauschmayer, ES proposal: arbitrary precision integers
  (opens new window)
- Mathias Bynens, BigInt: arbitrary-precision integers in JavaScript
  (opens new window)

## # 数组

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

## # 函数

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

## # 对象

- Addy Osmani, Data-binding Revolutions with Object.observe()
  (opens new window): 介绍 Object.observe()的概念
- Sella Rafaeli, Native JavaScript Data-Binding
  (opens new window): 如何使用 Object.observe 方法，实现数据对象与 DOM 对象的双向绑定
- Axel Rauschmayer, `__proto__` in ECMAScript 6
  (opens new window)
- Axel Rauschmayer, Enumerability in ECMAScript 6
  (opens new window)
- Axel Rauschmayer, ES proposal: Object.getOwnPropertyDescriptors()
  (opens new window)
- TC39, Object.getOwnPropertyDescriptors Proposal
  (opens new window)
- David Titarenco, How Spread Syntax Breaks JavaScript
  (opens new window): 扩展运算符的一些不合理的地方

## # Symbol

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

## # Set 和 Map

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

## # Proxy 和 Reflect

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

## # Promise 对象

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

## # Iterator

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

## # Generator

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

## # 异步操作和 Async 函数

- Luke Hoban, Async Functions for ECMAScript
  (opens new window): Async 函数的设计思想，与 Promise、Gernerator 函数的关系
- Jafar Husain, Asynchronous Generators for ES7
  (opens new window): Async 函数的深入讨论
- Nolan Lawson, Taming the asynchronous beast with ES7
  (opens new window): async 函数通俗的实例讲解
- Jafar Husain, Async Generators
  (opens new window): 对 async 与 Generator 混合使用的一些讨论
- Daniel Brain, Understand promises before you start using async/await
  (opens new window): 讨论 async/await 与 Promise 的关系
- Jake Archibald, Async functions - making promises friendly
  (opens new window)
- Axel Rauschmayer, ES proposal: asynchronous iteration
  (opens new window): 异步遍历器的详细介绍
- Dima Grossman, How to write async await without try-catch blocks in JavaScript
  (opens new window): 除了 try/catch 以外的 async 函数内部捕捉错误的方法
- Mostafa Gaafa, 6 Reasons Why JavaScript’s Async/Await Blows Promises Away
  (opens new window): Async 函数的6个好处
- Mathias Bynens, Asynchronous stack traces: why await beats Promise#then()
  (opens new window): async 函数可以保留错误堆栈

## # Class

- Sebastian Porto, ES6 classes and JavaScript prototypes
  (opens new window): ES6 Class 的写法与 ES5 Prototype 的写法对比
- Jack Franklin, An introduction to ES6 classes
  (opens new window): ES6 class 的入门介绍
- Axel Rauschmayer, ECMAScript 6: new OOP features besides classes
  (opens new window)
- Axel Rauschmayer, Classes in ECMAScript 6 (final semantics)
  (opens new window): Class 语法的详细介绍和设计思想分析
- Eric Faust, ES6 In Depth: Subclassing
  (opens new window): Class 语法的深入介绍
- Nicolás Bevacqua, Binding Methods to Class Instance Objects
  (opens new window): 如何绑定类的实例中的 this
- Jamie Kyle, JavaScript's new #private class fields
  (opens new window)：私有属性的介绍。
- Mathias Bynens, Public and private class fields
  (opens new window)：实例属性的新写法的介绍。

## # Decorator

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

## # Module

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

## # 二进制数组

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

## # SIMD

- TC39, SIMD.js Stage 2
  (opens new window)
- MDN, SIMD
  (opens new window)
- TC39, ECMAScript SIMD
  (opens new window)
- Axel Rauschmayer, JavaScript gains support for SIMD
  (opens new window)

## # 工具

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

编辑
(opens new window)
#ES6
上次更新: 2022/12/14, 19:36:42
SIMD

← SIMD

最近更新

  01
Git修改分支名
08-11

  02
CSS给table的tbody添加滚动条
06-29

  03
我做了一个手写春联小网页，祝大家虎年暴富 原创
01-28

更多文章>

Copyright © 2016-2022 Hesb | MIT License

- 跟随系统
- 浅色模式
- 深色模式
- 阅读模式