[TOC]
> http://exploringjs.com/es2016-es2017/index.html
> [https://www.html.cn/archives/7753](https://www.html.cn/archives/7753)
# II ECMAScript 2016
## 3. `Array.prototype.includes`
3.1 Overview
3.2 The Array method includes
3.3 Frequently asked questions
3.4 Further reading
## 4. 求冪運算符 (**)
4.1 概述
4.2 An infix operator for exponentiation
4.3 Examples
4.4 Precedence
4.5 Further reading
# III ECMAScript 2017
## 5. Async Functions (異步函數)
5.1 概述
5.1.1 變體(Variants
5.1.2 Async functions always return Promises
5.1.3 Handling results and errors of asynchronous computations via await
5.2 Understanding async functions
5.2.1 Writing asynchronous code via generators
5.2.2 Writing asynchronous code via async functions
5.2.3 Async functions are started synchronously, settled asynchronously
5.2.4 Returned Promises are not wrapped
5.3 Tips for using `await`
5.3.1 Don’t forget `await`
5.3.2 You don’t need await if you “fire and forget”
5.3.3 `await` is sequential,`Promise.all()`is parallel
5.4 Async functions and callbacks
5.4.1 `Array.prototype.map()`
5.4.2 `Array.prototype.forEach()`
5.5 Tips for using async functions
5.5.1 Know your Promises
5.5.2 Immediately Invoked Async Function Expressions
5.5.3 Unit testing with async functions
5.5.4 Don’t worry about unhandled rejections
5.6 Further reading
## 6. 共享內存 和 Atomics
6.1 Parallelism vs. concurrency
6.1.1 Models of parallelism
6.2 A history of JS parallelism
6.2.1 The next step: SharedArrayBuffer
6.3 Shared Array Buffers
6.3.1 Creating and sending a Shared Array Buffer
6.3.2 Receiving a Shared Array Buffer
6.4 Atomics: safely accessing shared data
6.4.1 Problem: Optimizations make code unpredictable across workers
6.4.2 Solution: atomics
6.4.3 Problem: torn values
6.5 Shared Array Buffers in use
6.5.1 Shared Array Buffers and the run-to-completion semantics of JavaScript
6.5.2 Shared Array Buffers and asm.js and WebAssembly
6.5.3 Sharing data other than integers
6.5.4 How much faster is code that uses Shared Array Buffers?
6.6 Example
6.6.1 Using a shared lock
6.6.2 Implementing a shared lock
6.6.3 Conclusion for the example
6.7 The API for shared memory and atomics
6.7.1 SharedArrayBuffer
6.7.2 Atomics
6.8 FAQ
6.8.1 What browsers support Shared Array Buffers?
6.9 Further reading
## 7. `Object.entries()`和`Object.values()`
7.1 概述
7.1.1 `Object.entries()`
7.1.2 `Object.values()`
7.2 `Object.entries()`
7.2.1 Setting up Maps via Object.entries()
7.2.2 FAQ: `Object.entries()`
7.3 Object.values()
## 8. 新的字符串方法:`padStart`和`padEnd`
8.1 Overview
8.2 Why pad strings?
8.3 `String.prototype.padStart(maxLength, fillString=' ')`
8.3.1 A simple implementation of padStart()
8.4 `String.prototype.padEnd(maxLength, fillString=' ')`
8.5 FAQ: `padStart`and`padEnd`
8.5.1 Why aren’t the padding methods called padLeft and padRight?
## 9. `Object.getOwnPropertyDescriptors()`
9.1 Overview
9.2 `Object.getOwnPropertyDescriptors()`
9.3 Use cases for `Object.getOwnPropertyDescriptors()`
9.3.1 Use case: copying properties into an object
9.3.2 Use case: cloning objects
9.3.3 Use case: cross-platform object literals with arbitrary prototypes
9.4 Pitfall: copying methods that use `super`
## 10. 函數參數列表和調用尾逗號
10.1 Overview
10.2 Trailing commas in object literals and Array literals
10.3 Feature: allow trailing commas in parameter definitions and function calls
## 11. 修飾器(Decorator)