第1章 初识JavaScript 1
1.1 JavaScript概述 2
1.1.1 JavaScript和HTML的关系 2
1.1.2 JavaScript与浏览器的关系 3
1.1.3 JavaScript的运行原理 4
1.2 JavaScript的主要应用 5
1.2.1 处理用户事件 5
1.2.2 用JavaScript跨平台开发移动APP 6
1.2.3 节省与Web服务器的交互时间 7
1.2.4 编写页面特效 8
1.2.5 客户端功能插件 10
1.2.6 游戏和微活动 11
1.2.7 其他方面的应用 11
1.3 JavaScript的发展史 12
1.3.1 JavaScript的诞生 12
1.3.2 JavaScript与Java的关系 13
1.3.3 JavaScript与JScript的关系 13
1.4 伟大的ECMA标准 13
1.4.1 ECMAScript标准是什么 14
1.4.2 ECMAScript标准的由来 14
1.4.3 ECMAScript标准的版本 14
1.4.4 ECMAScript第6版的新特性 15
1.5 JavaScript的特性 16
1.6 JavaScript的组成 16
1.6.1 JavaScript语言的语法 16
1.6.2 文档对象模型(DOM) 17
1.6.3 浏览器对象模型(BOM) 18
1.7 JavaScript在移动开发中的应用 19
1.7.1 PC端和移动端开发的区别 19
1.7.2 什么是移动端Web APP 19
1.8 JavaScript常见的开发形式 20
1.8.1 原生JavaScript 20
1.8.2 JavaScript插件 20
1.8.3 JavaScript框架 20
1.9 JavaScript的开发工具 21
1.10 本书的上下文内容 23
1.11 JavaScript的学习方法 23
1.11.1 编程思想 24
1.11.2 编程实战 24
1.11.3 要事为先的原则 24
1.11.4 Bug解决之道 25
1.11.5 看教学视频,让学习变得简单 26
本章小结 27
课后练习题 27
第2章 学习前的准备 29
2.1 开发环境和开发工具的选择与使用 29
2.1.1 开发环境 30
2.1.2 开发工具 34
2.1.3 *扩展 36
2.2 在HTML中如何使用JavaScript 38
2.2.1 行内式 38
2.2.2 嵌入式 42
2.2.3 引入式 43
2.2.4 三种方式的特点 44
2.3 基本调试方法 45
2.3.1 警告窗 45
2.3.2 修改网页内容 46
2.3.3 修改标签内容 47
2.3.4 控制台 50
2.4 书写规范 52
2.4.1 基本的标点符号 52
2.4.2 严格区分大小写 55
2.4.3 注释 56
2.5 标识符 57
2.6 保留字 58
2.7 JavaScript的优化设计思想 59
本章小结 61
课后练习题 62
第3章 JavaScript中的变量 64
3.1 变量的声明和赋值 64
3.1.1 变量声明 64
3.1.2 变量赋值 66
3.2 变量提升 67
3.3 全局变量和局部变量 69
3.4 变量的命名规则 70
3.5 ES6新特性之局部变量 71
3.5.1 let关键字的基本使用 71
3.5.2 新增的区块作用域 72
3.5.3 关键字let与var的区别 73
3.6 ES6新特性之全局变量 75
3.7 ES6新特性之解构赋值 76
本章小结 78
课后练习题 78
第4章 JavaScript的数据类型 80
4.1 获取数据类型 80
4.2 字符串类型(string) 82
4.2.1 字面量表示 82
4.2.2 转义字符 84
4.2.3 字符串的特点 85
4.2.4 ES6新特性之模板字符串 86
4.3 数值类型(number) 88
4.3.1 字面量表示 88
4.3.2 进制转换 88
4.3.3 浮点数 89
4.3.4 浮点数的算术运算 90
4.3.5 数值范围 91
4.3.6 NaN 91
4.4 布尔类型(boolean) 92
4.5 未定义类型(undefined) 93
4.6 空类型(null) 93
4.7 对象类型(object) 94
4.8 类型转换 95
4.8.1 字符串类型转换 95
4.8.2 数值类型转换 97
4.8.3 布尔类型转换 101
4.9 ES6之Symbol类型 102
4.9.1 Symbol类型的创建 102
4.9.2 Symbol类型的特性 103
4.9.3 获取已创建的Symbol类型 105
本章小结 106
课后练习题 107
第5章 表达式与运算符 109
5.1 表达式 109
5.1.1 简单表达式 110
5.1.2 复杂表达式 110
5.2 运算符 112
5.2.1 算术运算符 112
5.2.2 赋值运算符 116
5.2.3 关系运算符 117
5.2.4 逻辑运算符 120
5.2.5 位运算符 124
5.2.6 其他运算符 127
5.2.7 优先级 131
本章小结 134
课后练习题 134
第6章 语句 137
6.1 顺序结构 137
6.2 表达式语句 138
6.3 声明语句 139
6.4 条件语句 139
6.4.1 if语句 140
6.4.2 if...else语句 141
6.4.3 else if语句 143
6.4.4 switch语句 145
6.5 循环语句 147
6.5.1 while循环 148
6.5.2 do...while循环 149
6.5.3 for循环 150
6.5.4 for...in循环 154
6.6 跳出语句 154
6.6.1 label语句 155
6.6.2 break语句 155
6.6.3 continue语句 156
本章小结 158
课后练习题 158
第7章 函数 161
7.1 函数分类 161
7.2 自定义函数 162
7.2.1 函数的创建和调用 162
7.2.2 参数 164
7.2.3 返回值 168
7.3 函数的特殊类型 168
7.3.1 函数表达式 168
7.3.2 自执行函数 169
7.3.3 回调函数 170
7.3.4 递归函数 173
7.3.5 构造函数 175
7.4 函数作用域 175
7.4.1 局部变量 175
7.4.2 变量的访问机制 176
7.4.3 变量的生命周期 178
7.5 闭包 179
7.6 ES6函数新特性 181
7.6.1 rest参数 181
7.6.2 箭头函数 182
本章小结 183
课后练习题 184
第8章 对象 187
8.1 理解对象 187
8.1.1 什么是对象 188
8.1.2 对象有什么用 189
8.1.3 如何使用对象 190
8.2 创建对象 192
8.2.1 字面量创建 192
8.2.2 构造函数创建 193
8.2.3 工厂模式 194
8.2.4 自定义构造函数 195
8.3 对象属性 197
8.3.1 属性的查询 198
8.3.2 属性的删除 198
8.3.3 属性的遍历 199
8.4 对象的存储 200
8.4.1 存储机制 200
8.4.2 垃圾回收机制 201
8.4.3 内存优化 201
8.5 ES6对象新特性 202
8.5.1 属性的简洁表示法 202
8.5.2 属性名的表达式 204
本章小结 206
课后练习题 206
第9章 数组 208
9.1 理解数组 208
9.1.1 什么是数组 208
9.1.2 数组的组成结构 209
9.1.3 数组和对象的联系与区别 209
9.2 创建数组 211
9.2.1 构造函数创建数组 211
9.2.2 数组直接量创建数组 213
9.3 数组元素 214
9.3.1 元素的获取 214
9.3.2 元素的添加、修改和删除 215
9.3.3 元素的查询 218
9.3.4 元素的遍历 220
9.4 特殊的数组形式 223
9.4.1 稀疏数组 223
9.4.2 多维数组 225
9.4.3 类数组对象 226
9.4.4 字符串 227
9.5 数组特有的方法 227
9.5.1 join()方法 228
9.5.2 concat()方法 228
9.5.3 splice()方法 229
9.5.4 slice()方法 230
9.5.5 push()和pop()方法 231
9.5.6 unshift()和shift()方法 231
9.5.7 forEach()方法 232
9.5.8 map()方法 233
9.5.9 filter()方法 233
9.5.10 every()和some()方法 234
9.5.11 reduce()和reduceRight()方法 235
9.5.12 indexOf()和lastIndexOf()方法 237
9.6 ES6数组新特性 237
9.6.1 Array.of()方法 237
9.6.2 数组实例的find()和findIndex()方法 238
9.6.3 数组实例的fill()方法 239
本章小结 240
课后练习题 240
第10章 内置对象 243
10.1 String对象 243
10.1.1 简单上手 244
10.1.2 构造方法 244
10.1.3 其他方法 245
10.1.4 实际操作 246
10.2 Math对象 247
10.2.1 简单上手 247
10.2.2 对象属性 248
10.2.3 对象方法 248
10.2.4 实际操作 249
10.3 Date对象 250
10.3.1 简单上手 251
10.3.2 构造方法 251
10.3.3 实例方法 253
10.3.4 静态方法 256
10.3.5 实际操作 257
10.4 RegExp对象 258
10.4.1 简单上手 258
10.4.2 构造方法 258
10.4.3 元字符 259
10.4.4 运算符优先级 261
10.4.5 实际操作 262
10.5 Number对象 263
10.5.1 简单上手 263
10.5.2 构造方法 263
10.5.3 对象属性 263
10.5.4 对象方法 264
10.5.5 实际操作 265
10.6 Event对象 266
10.6.1 简单上手 266
10.6.2 事件句柄(Event Handlers) 267
10.6.3 鼠标/键盘属性 268
10.6.4 IE属性 270
10.6.5 标准Event对象属性 271
10.6.6 标准Event对象方法 272
本章小结 272
课后练习题 273