第1章 ECMAScript基础 1
1.1 认识ECMAScript 1
1.1.1 ECMAScript的基本概念 1
1.1.2 JavaScript与ECMAScript的发展历史 2
1.1.3 ECMAScript版本更迭 2
1.1.4 JavaScript与ECMAScript异同 3
1.1.5 ECMAScript脚本语言的特点 4
1.1.6 JavaScript代码解释器 4
1.2 在网页中使用ECMAScript脚本语言 6
1.2.1 <script>标签 6
1.2.2 嵌入式ECMAScript脚本 6
1.2.3 引入外部ECMAScript脚本文件 8
1.3 ECMAScript脚本运行机制 9
1.4 ECMAScript脚本代码的开发与调试 14
1.4.1 第一步:使用WebStorm集成开发平台创建项目、.页面文件 14
1.4.2 第二步:使用WebStorm集成开发平台创建脚本文件 16
1.4.3 第三步:使用Firefox浏览器运行HTML页面和调试脚本代码 17
1.5 本章小结 19
第2章 ECMAScript语法 20
2.1 ECMAScript语法规范 20
2.1.1 ECMAScript语句 20
2.1.2 ECMAScript大小写字母敏感 21
2.1.3 ECMAScript代码空格 21
2.1.4 ECMAScript代码强制换行 21
2.1.5 ECMAScript代码注释 21
2.1.6 ECMAScript代码块 22
2.2 ECMAScript变量 22
2.2.1 弱类型的ECMAScript变量 22
2.2.2 声明ECMAScript变量 23
2.2.3 ECMAScript变量命名习惯 24
2.2.4 动态改变ECMAScript变量类型 24
2.2.5 未声明的ECMAScript变量 25
2.2.6 严格模式 26
2.3 1et关键字 27
2.3.1 变量作用域 27
2.3.2 变量提升 28
2.3.3 全局变量、局部变量和块级作用域 29
2.3.4 let关键字的简单示例 31
2.3.5 let关键字使用规则 32
2.3.6 let关键字应用 33
2.4 const关键字 35
2.5 ECMAScript关键字和保留字 38
2.6 本章小结 39
第3章 值与类型 40
3.1 ECMAScript原始值与引用值 40
3.1.1 ECMAScript原始值与引用值 40
3.1.2 ECMAScript原始类型概述 41
3.2 Undefined原始类型 41
3.3 Null原始类型 44
3.4 Boolean原始类型 46
3.5 Number原始类型 48
3.5.1 Number原始类型介绍 48
3.5.2 十进制Number原始类型 48
3.5.3 二进制Number原始类型 49
3.5.4 八进制Number原始类型 50
3.5.5 十六进制Number原始类型 51
3.5.6 浮点数Number原始类型 53
3.5.7 Number原始类型科学计数法 54
3.6 Number特殊值及方法 55
3.6.1 Number最大值与最小值 55
3.6.2 Number无穷大 56
3.6.3 非数值NaN 58
3.6.4 Number安全整数值 59
3.6.5 Number.EPSILON 61
3.7 String原始类型 62
3.7.1 String原始类型介绍 62
3.7.2 定义String原始类型 62
3.7.3 字符串连接 63
3.7.4 特殊字符串 64
3.7.5 获取字符串长度 65
3.7.6 字符的Unicode编码表示 66
3.8 本章小结 70
第4章 类型转换 71
4.1 转换为字符串 71
4.1.1 toString()函数方法的语法格式 71
4.1.2 使用默认toString()函数方法 71
4.1.3 Number类型数值转换为字符串 73
4.1.4 使用带参数的toString()函数方法 74
4.2 转换为数值 75
4.2.1 parseInt()函数方法的语法格式 75
4.2.2 转换为整数数值 76
4.2.3 转换指定基数的整数数值 77
4.2.4 parseFloat()函数方法的语法格式 78
4.2.5 转换为浮点数 79
4.3 强制类型转换 81
4.3.1 强制类型转换基础 81
4.3.2 强制转换为Number类型 81
4.3.3 强制转换为Boolean类型 83
4.3.4 强制转换为String类型 84
4.4 本章小结 86
第5章 解构 87
5.1 ECMAScript变量赋值机制 87
5.1.1 变量赋值机制介绍 87
5.1.2 变量赋值机制相关原理 88
5.1.3 关于变量的解构赋值 88
5.2 ECMAScript数组解构赋值 89
5.2.1 数组解构赋值的基本方式 89
5.2.2 数组解构赋值的嵌套方式 90
5.2.3 含有空位的数组解构赋值 91
5.2.4 使用省略号的数组解构赋值 92
5.2.5 未定义的数组解构赋值 94
5.2.6 无效的数组解构赋值 95
5.2.7 使用默认值的数组解构赋值 97
5.2.8 默认值为变量的数组解构赋值 98
5.2.9 默认值为表达式的数组解构赋值 100
5.3 ECMAScript对象解构赋值 101
5.3.1 对象解构赋值的基本方式 101
5.3.2 不按次序的对象解构赋值 102
5.3.3 对象解构赋值方式的扩展 103
5.4 ECMAScript字符串解构赋值 104
5.5 ECMAScript数值解构赋值 105
5.6 ECMAScript解构赋值的应用 106
5.6.1 交换变量的值 106
5.6.2 函数返回多个值 109
5.6.3 定义函数参数 110
5.7 本章小结 112
第6章 运算符与表达式 113
6.1 ECMAScript加性运算符及表达式 113
6.1.1 概述 113
6.1.2 加法运算符及表达式 113
6.1.3 减法运算符及表达式 116
6.2 ECMAScript乘性运算符及表达式 118
6.2.1 乘性运算符与表达式概述 118
6.2.2 乘法运算符及表达式 118
6.2.3 除法运算符及表达式 120
6.2.4 取模运算符及表达式 121
6.3 ECMAScript一元运算符及表达式 123
6.3.1 一元运算符与表达式概述 123
6.3.2 new和delete运算符及表达式 123
6.3.3 void运算符及表达式 125
6.3.4 前增量与前减量运算符及表达式 127
6.3.5 后增量与后减量运算符及表达式 128
6.3.6 一元加法与一元减法运算符及表达式 129
6.4 ECMAScript关系运算符及表达式 131
6.4.1 关系运算符与表达式概述 131
6.4.2 数值关系运算符表达式 132
6.4.3 字符串关系运算符表达式 132
6.4.4 数值与字符串关系运算符表达式 133
6.5 ECMAScript等性运算符及表达式 134
6.5.1 等性运算符与表达式概述 135
6.5.2 等号与不等号运算符表达式 135
6.5.3 严格相等与非严格相等运算符表达式 137
6.6 ECMAScript位运算符及表达式 138
6.6.1 位运算符与表达式概述 139
6.6.2 整数编码介绍 139
6.6.3 NOT位运算符及表达式 141
6.6.4 AND位运算符及表达式 142
6.6.5 OR位运算符及表达式 143
6.6.6 XOR位运算符及表达式 144
6.6.7 左移运算符及表达式 145
6.6.8 保留符号位的右移运算符及表达式 146
6.6.9 无符号位的右移运算符及表达式 148
6.7 ECMAScript逻辑运算符及表达式 149
6.7.1 逻辑运算符与表达式概述 149
6.7.2 ToBoolean逻辑值转换操作 150
6.7.3 AND运算符及表达式 151
6.7.4 OR运算符及表达式 152
6.7.5 NOT运算符及表达式 154
6.8 ECMAScript赋值运算符及表达式 156
6.9 ECMAScript条件运算符及表达式 157
6.10 本章小结 159
第7章 流程控制语句 160
7.1 if条件语句 160
7.1.1 if语句 160
7.1.2 if...else...语句 161
7.1.3 if...else if...else...语句 162
7.2 switch条件语句 164
7.3 循环迭代语句 166
7.3.1 for语句 166
7.3.2 for...in...语句 168
7.3.3 while语句 170
7.3.4 do...while语句 170
7.4 循环中断语句 171
7.4.1 break语句 172
7.4.2 continue语句 172
7.4.3 break语句与标签语句配合使用 173
7.4.4 continue语句与标签语句配合使用 175
7.5 ECMAScript 6新特新——for of迭代循环 177
7.5.1 迭代数组 177
7.5.2 迭代字符串 177
7.5.3 for of循环迭代原理 178
7.6 本章小结 178
第8章 函数 179
8.1 ECMAScript函数基础 179
8.2 ECMAScript函数声明、定义与调用 180
8.2.1 传统方式定义ECMAScript函数 180
8.2.2 ECMAScript函数表达式方式 181
8.2.3 Function构造方式定义ECMAScript函数 184
8.3 ECMAScript函数返回值 185
8.4 arguments对象 187
8.5 Function对象 190
8.5.1 Function对象实现函数指针 190
8.5.2 Function对象属性 192
8.5.3 Function对象方法 193
8.6 本章小结 194
第9章 系统函数 195
9.1 ECMAScript常规函数 195
9.1.1 常规函数介绍 195
9.1.2 警告对话框和确认对话框 195
9.1.3 parseInt()函数 197
9.1.4 isNaN()函数 198
9.1.5 eval()函数 199
9.2 ECMAScript字符串函数 200
9.3 ECMAScript数学函数 203
9.4 ECMAScript数组函数 204
9.4.1 数组函数介绍 204
9.4.2 join函数 205
9.4.3 reverse函数 205
9.4.4 sort函数 206
9.4.5 from函数 207
9.5 ECMAScript日期函数 209
9.6 本章小结 210
第10章 函数扩展 211
10.1 ECMAScript函数参数扩展 211
10.1.1 可变参数 211
10.1.2 rest参数 213
10.1.3 参数默认值 214
10.1.4 省略参数默认值的正确方式 216
10.2 length属性扩展 218
10.2.1 参数默认值方式下的length属性 218
10.2.2 rest参数方式下的length属性 219
10.2.3 参数默认值不同位置下的length属性 220
10.3 name属性扩展 220
10.4 箭头函数 221
10.4.1 箭头函数的基本形式 221
10.4.2 箭头函数的参数 222
10.4.3 箭头函数的函数体 224
10.5 箭头函数扩展应用 224
10.5.1 箭头函数计算工具 225
10.5.2 箭头函数与解构赋值 226
10.5.3 箭头函数与回调函数 227
10.5.4 箭头函数与链式函数 228
10.6 本章小结 229
第11章 ECMAScript对象 230
11.1 ECMAScript对象 230
11.1.1 什么是ECMAScript对象 230
11.1.2 ECMAScript对象构成 230
11.1.3 ECMAScript对象实例 231
11.2 创建ECMAScript对象 231
11.3 ECMAScript对象初始化 231
11.4 ECMAScript对象销毁 233
11.5 ECMAScript对象绑定方式 235
11.6 本章小结 235
第12章 对象类型 236
12.1 ECMAScript对象概述 236
12.2 Object对象 237
12.3 String对象 238
12.4 Array对象 239
12.4.1 Array对象初始化 239
12.4.2 Array对象连接操作 241
12.4.3 Array对象模拟堆栈 242
12.5 Number对象 244
12.6 Boolean对象 245
12.7 Date对象 246
12.7.1 Date对象基础 247
12.7.2 Date对象应用(一) 248
12.7.3 Date对象应用(二) 249
12.8 本章小结 251
第13章 对象新特性 252
13.1 对象属性的简洁表示法 252
13.2 Symbol数据类型 254
13.2.1 定义Symbol对象 254
13.2.2 Symbol对象的唯一性 254
13.2.3 Symbol定义属性名 255
13.3 Set数据类型 256
13.3.1 定义和遍历Set数据类型 256
13.3.2 判断Set集合中的值 257
13.3.3 删除和清空Set集合 258
13.4 Map数据类型 259
13.4.1 定义Map数据类型和基本存取操作 259
13.4.2 判断Map集合中的值 260
13.4.3 删除和清空Map集合 261
13.5 本章小结 262
第14章 正则表达式 263
14.1 正则表达式基础 263
14.1.1 什么是正则表达式 263
14.1.2 RegExp对象语法 263
14.1.3 RegExp对象模式 264
14.2 RegExp对象方法 267
14.2.1 test方法 267
14.2.2 exec方法 268
14.2.3 compile方法 269
14.3 RegExp对象修饰符标记 270
14.3.1 “g”修饰符标记 271
14.3.2 “i”修饰符标记 272
14.3.3 “g”和“i”修饰符标记组合 273
14.4 本章小结 274
第15章 面向对象编程 275
15.1 面向对象基础 275
15.1.1 什么是“面向对象” 275
15.1.2 面向对象的特点 276
15.1.3 面向对象的专业术语 276
15.2 ECMAScript对象作用域 277
15.2.1 对象作用域 277
15.2.2 this关键字 277
15.3 创建ECMAScript类与对象 278
15.3.1 工厂模式创建类与对象 278
15.3.2 封装的工厂模式创建类与对象 279
15.3.3 带参数的工厂模式创建类与对象 281
15.3.4 工厂模式的最大局限 282
15.3.5 构造函数方式创建类与对象 283
15.3.6 原型方式创建类与对象 284
15.3.7 结合构造函数方式与原型方式创建类和对象 285
15.4 原型Prototype应用 286
15.4.1 定义新方法 286
15.4.2 重定义已有方法 287
15.4.3 实现继承机制 288
15.5 ECMAScript 6面向对象新特性 291
15.5.1 通过“class”定义类 291
15.5.2 通过“extends”继承类 292
15.5.3 类的setter和getter方法 293
15.6 本章小结 294
第16章 ECMAScript 7&8版本新特性 295
16.1 ECMAScript 7&8版本的新特性 295
16.2 ECMAScript 7(2016)版本的新特性 295
16.2.1 Array.prototype.includes()方法 296
16.2.2 指数操作符 297
16.3 ECMAScript 8(2017)版本的新特性 298
16.3.1 字符串填充(String Padding) 298
16.3.2 对象遍历 300
16.3.3 异步函数(Async Function) 301
16.4 本章小结 305