第一部分 起步上路 2
序 2
第1章 深入编程 4
1.1代码 4
1.2表达式 5
1.3实践 6
1.3.1输出 7
1.3.2输入 8
1.4运算符 9
1.5值与类型 11
1.6代码注释 13
1.7变量 14
1.8块 16
1.9条件判断 17
1.10循环 18
1.11函数 20
1.12实践 23
1.13小结 25
第2章 深入JavaScript 26
2.1值与类型 26
2.1.1对象 28
2.1.2内置类型方法 30
2.1.3值的比较 31
2.2变量 35
2.3条件判断 37
2.4严格模式 39
2.5作为值的函数 40
2.5.1立即调用函数表达式 41
2.5.2闭包 42
2.6 this标识符 44
2.7原型 46
2.8 旧与新 47
2.8.1 polyfilling 47
2.8.2 transpiling 48
2.9非JavaScript 49
2.10小结 50
第3章 深入“你不知道的JavaScript”系列 51
3.1作用域和闭包 51
3.2 this和对象原型 52
3.3类型和语法 53
3.4异步和性能 53
3.5 ES6及更新版本 54
3.6小结 55
第二部分ES6及更新版本 58
序 58
第1章ES?现在与未来 59
1.1版本 60
1.2 transpiling 61
1.3小结 63
第2章 语法 64
2.1块作用域声明 64
2.1.1 let声明 65
2.1.2 const声明 68
2.1.3块作用域函数 70
2.2 spread/rest 71
2.3默认参数值 73
2.4解构 77
2.4.1对象属性赋值模式 78
2.4.2不只是声明 79
2.4.3重复赋值 81
2.5太多,太少,刚刚好 83
2.5.1默认值赋值 84
2.5.2嵌套解构 84
2.5.3解构参数 85
2.6对象字面量扩展 90
2.6.1简洁属性 90
2.6.2简洁方法 90
2.6.3计算属性名 95
2.6.4设定[[prototype]] 96
2.6.5 super对象 97
2.7模板字面量 98
2.7.1插入表达式 99
2.7.2标签模板字面量 100
2.8箭头函数 103
2.9 for…of循环 109
2.10正则表达式 111
2.10.1 Unicode标识 111
2.10.2定点标识 112
2.10.3正则表达式f lags 116
2.11数字字面量扩展 117
2.12 Unicode 118
2.12.1支持Unicode的字符串运算 119
2.12.2字符定位 121
2.12.3 Unicodc标识符名 123
2.13符号 123
2.13.1符号注册 125
2.13.2作为对象属性的符号 127
2.14小结 128
第3章 代码组织 129
3.1迭代器 129
3.1.1接口 130
3.1.2 next()迭代 131
3.1.3可选的return(…)和throw(…) 132
3.1.4迭代器循环 133
3.1.5自定义迭代器 134
3.1.6迭代器消耗 137
3.2生成器 138
3.2.1语法 139
3.2.2迭代器控制 144
3.2.3提前完成 147
3.2.4错误处理 149
3.2.5 Transpile生成器 151
3.2.6生成器使用 152
3.3模块 153
3.3.1旧方法 153
3.3.2前进 154
3.3.3新方法 156
3.3.4模块依赖环 164
3.3.5模块加载 166
3.4类 167
3.4.1 class 168
3.4.2 extends和super 169
3.4.3 new.target 174
3.4.4 static 175
3.5小结 176
第4章 异步流控制 177
4.1 Promise 177
4.1.1构造和使用Promise 178
4.1.2 Thenable 180
4.1.3 promise API 181
4.2生成器+Promise 183
4.3小结 185
第5章 集合 187
5.1 TypedArray 187
5.1.1大小端(Endianness ) 188
5.1.2多视图 189
5.1.3带类数组构造器 190
5.2 Map 192
5.2.1 Map值 194
5.2.2 M ap键 194
5.3 WeakMap 195
5.4 Set 196
5.5 WeakSet 198
5.6小结 199
第6章 新增API 200
6.1 Array 200
6.1.1静态函数Array.of(…) 200
6.1.2静态函数Array.from(…) 201
6.1.3创建数组和子类型 204
6.1.4原型方法copywithin(…) 205
6.1.5原型方法fill(…) 206
6.1.6原型方法find(…) 206
6.1.7原型方法findInde×(…) 207
6.1.8原型方法entries() 、 values() 、 keys() 208
6.2 Object 209
6.2.1静态函数Object.is(…) 209
6.2.2静态函数Object.getOwnpropertySymbols(…) 210
6.2.3静态函数Object.setprototypeOf(…) 210
6.2.4静态函数 Object…assign(…) 211
6.3 Math 212
6.4 Number 214
6.4.1静态属性 214
6.4.2静态函数Number.isNaN(…) 214
6.4.3静态函数Number.isFinite(…) 215
6.4.4整型相关静态函数 215
6.5字符串 216
6.5.1 Unicode函数 217
6.5.2静态函数String.raw(…) 217
6.5.3原型函数repeat(…) 217
6.5.4字符串检查函数 218
6.6小结 218
第7章 元编程 219
7.1函数名称 219
7.2元属性 222
7.3公开符号 223
7.3.1 Symbol.iterator 223
7.3.2 Symbol.toStringTag与Symbol.hasInstance 224
7.3.3 Symbol.species 225
7.3.4 Symbol.toprimitive 226
7.3.5正则表达式符号 226
7.3.6 Symbol.isConcatSpreadable 227
7.3.7 Symbol.unscopables 228
7.4代理 228
7.4.1代理局限性 231
7.4.2可取消代理 232
7.4.3使用代理 233
7.5 Reflect API 240
7.6特性测试 243
7.7尾递归调用(Tail Call Optimization,TCO) 245
7.7.1尾调用重写 247
7.7.2非TCO优化 248
7.7.3元在何处 250
7.8小结 251
第8章ES6之后 253
8.1异步函数 254
8.2 Object.observe(…) 257
8.2.1自定义改变事件 258
8.2.2结束观测 259
8.3幂运算符 260
8.4对象属性与 260
8.5 Array#includes(…) 261
8.6 SIMD 262
8.7 WebAssembly (WASM) 262
8.8小结 264