猜你喜欢
剑指JavaScript——核心原理与应用实践

剑指JavaScript——核心原理与应用实践

书籍作者:尚硅谷教育 ISBN:9787121452352
书籍语言:简体中文 连载状态:全集
电子书格式:pdf,txt,epub,mobi,azw3 下载次数:3378
创建日期:2024-03-26 发布日期:2024-03-26
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板
内容简介

本书采用ES5和ES6融合的方式编写,兼顾了主流应用和发展趋势,书中知识点结合实际开发讲解演示。本书从JavaScript额的历史开始讲解,由浅入深地带领读者逐渐走入JavaScript的世界。本书内容包括:变量、基本数据类型、运算符和表达式、语句、函数、对象、数组、BOM、DOM、AJAX、异步编程及ES6新特性等。本书语言通俗易懂,案例贴近实际工作需求,内容全面,深入浅出地简洁了前端开发需掌握的知识点。与此同时,本书还对一些底层实现进行了介绍,让读者在阅读完本书之后对JavaScript有更深入的理解。

作者简介

尚硅谷教育是一家专业的IT教育培训机构,开设了JavaEE、大数据、HTML5前端等多门学科,在互联网上发布的JavaEE、大数据、HTML5前端、区块链、C语言、Python等技术视频教程广受赞誉。

编辑推荐

本书采用ES5和ES6融合的方式编写,兼顾了主流应用和发展趋势,书中知识点结合实际开发讲解演示。

前言

JavaScript是前端开发的基础,也是核心技术。

当今互联网飞速发展,网站效果越来越酷炫,对于用户交互,JavaScript身负重任。时至今日,JavaScript面世多年,已经发展至ECMAScript 2022,其间历经多个版本,技术不断迭代完善。例如,定义变量关键字、数据类型、字符串和数组方法的增加,函数语法的简化,引入模块化规范……这证明JavaScript这门语言已经发展至足够成熟。

对于笔者而言,写出一本让“小白”从0到1,让“老鸟”有所借鉴或提升的书,是一个极大的挑战。我们的教研团队初期想法是像市面上大部分书籍一样循规蹈矩,将ES5和ES6两种语法完全剥离,让读者明确区分两个版本的不同语法。后来,考虑到在实际开发中早已将这两种语法融合使用,分开讲解的方式不符合实际情况。为帮助读者快速上手JavaScript,我们将ES的多个版本语法进行融合讲解,使读者对JavaScript的理解可以更加快速、深入。本书历经多次修改,最后才匠心出品,希望给读者最好的体验。

JavaScript是前端学习中开发者遇到的第一个涉及编程思想的语言。所谓“百丈高台,始于一石;根基不牢,地动山摇”,对于前端开发者来说,除了JavaScript,还有很多前端框架需要学习,Vue、React、Angular等框架都是基于JavaScript语法的封装。因此,我们要在学习初期打好基础,在后续的学习中再逐步提高编程能力。

本书对知识点进行深入剖析,挖掘底层原理,并配以大量案例和图片进行辅助理解。本书内容层层递进,可以让读者快速、牢固地掌握JavaScript知识,按照自己的意愿编写代码。

全书共分15章,详细介绍了JavaScript的相关知识,即JavaScript的历史、编程工具、变量、基本数据类型、运算符和表达式、语句、函数、对象、数组、BOM、DOM、AJAX、异步编程及ES6语法等内容。

阅读本书需要读者具备HTML和CSS基础。可以关注尚硅谷教育微信号“atguigu”,在聊天窗口发送关键字“JSbook”,免费获取本书配套资料及视频教程,也可以在B站搜索尚硅谷官方账号,免费在线学习。

感谢电子工业出版社的李冰编辑,是您的精心指导让本书得以面世,也感谢所有为本书内容编写提供技术支持的老师们付出的努力。


尚硅谷教育


目录

第1章 走进JavaScript世界 1

1.1 JavaScript是什么 1

1.2 JavaScript的历史 2

1.3 JavaScript与Java无关 3

1.4 JavaScript的应用场景 4

1.5 JavaScript的不同实现 5

1.5.1 ECMAScript 5

1.5.2 BOM 6

1.5.3 DOM 6

1.5.4 Node.js 6

1.6 JavaScript的重要版本 6

1.7 编写第一行JavaScript 代码 8

1.7.1 编程工具 8

1.7.2 代码编写位置 9

1.7.3 代码注释 11

1.7.4 空格与分号 12

1.7.5 程序调试 12

1.8 严格模式 13

1.9 本章小结 13

第2章 变量 14

2.1 var声明 14

2.1.1 var声明作用域 16

2.1.2 var声明提升 17

2.2 let声明 19

2.2.1 let声明的块作用域 20

2.2.2 暂时性死区 21

2.3 const声明 21

2.4 变量声明的最佳实践 22

2.5 变量的命名规范 22

2.6 案例:如何交换两个变量的值 24

2.7 本章小结 26

第3章 基本数据类型 27

3.1 使用typeof检测数据类型 27

3.2 Number类型 28

3.2.1 认识Number类型 28

3.2.2 Infinity和-Infinity 28

3.2.3 多种进制 29

3.2.4 特殊数值NaN 31

3.3 String类型 31

3.3.1 认识String类型 31

3.3.2 模板字符串 32

3.3.3 特殊字符 33

3.4 Boolean类型 34

3.5 Undefined类型 34

3.6 Null类型 35

3.7 BigInt类型 35

3.8 显式类型转换 36

3.8.1 将其他类型值转换为Number类型 36

3.8.2 将其他类型值转换为String类型 36

3.8.3 将其他类型值转换为Boolean类型 37

3.9 隐式类型转换 37

3.10 手动类型转换 38

3.11 案例:小小加法计算器 38

3.12 本章小结 40

第4章 运算符和表达式 41

4.1 算术运算符 41

4.1.1 加、减法运算符 42

4.1.2 乘、除法运算符 42

4.1.3 取余运算符 43

4.1.4 案例:计算一个三位数各个数位上的数字的总和 43

4.2 赋值运算符 44

4.2.1 二元赋值运算符 45

4.2.2 一元赋值运算符 46

4.3 比较运算符 47

4.3.1 大于运算符和小于运算符 47

4.3.2 等于运算符和不等于运算符 48

4.4 逻辑运算符 49

4.4.1 非运算 49

4.4.2 且运算 49

4.4.3 或运算 50

4.4.4 短路现象 51

4.4.5 案例:数轴上的范围表示 51

4.5 条件运算符 52

4.6 其他运算符 52

4.7 运算符优先级 53

4.7.1 数学运算符的优先级 53

4.7.2 逻辑运算符的优先级 54

4.7.3 综合运算优先级 54

4.8 本章小结 55

第5章 语句 56

5.1 条件语句之if 语句 56

5.1.1 单分支if语句和双分支if语句 57

5.1.2 多分支if语句 59

5.1.3 if语句的嵌套 61

5.1.4 案例:考试成绩分档 62

5.2 条件语句之switch 语句 64

5.2.1 基本语法 65

5.2.2 案例:判断某月份有多少天 66

5.3 循环语句之for循环 69

5.3.1 基本语法 69

5.3.2 案例:使用for循环输出年份和年龄 72

5.4 循环语句之while循环 72

5.4.1 基本语法 72

5.4.2 案例:使用while循环输出年份和年龄 74

5.5 循环语句之do…while循环 75

5.5.1 基本语法 75

5.5.2 案例:生成不都为0的随机数 76

5.6 跳转 76

5.6.1 break 76

5.6.2 continue 77

5.6.3 区分while和do…while 77

5.7 循环嵌套 78

5.8 本章小结 80

第6章 函数(上) 81

6.1 函数的定义与调用 82

6.2 函数封装练习 85

6.3 函数参数相关 87

6.3.1 参数默认值 87

6.3.2 剩余参数 88

6.4 作用域 90

6.5 作用域链 92

6.6 箭头函数 93

6.6.1 箭头函数的语法使用 93

6.6.2 箭头函数的特性 94

6.7 本章小结 96

第7章 对象 97

7.1 创建对象 97

7.1.1 new Object() 98

7.1.2 对象字面量 98

7.1.3 new自定义构造函数 99

7.1.4 Object.create() 101

7.2 ES6新增对象书写格式 102

7.2.1 属性和方法的简写 102

7.2.2 属性名表达式 103

7.3 操作对象的属性和方法 103

7.3.1 点操作符和中括号操作符 103

7.3.2 新增属性 105

7.3.3 修改属性 106

7.3.4 读取属性 106

7.3.5 删除属性 107

7.3.6 定义getter和setter的属性 107

7.4 原型与原型链 109

7.4.1 原型 109

7.4.2 原型链 111

7.4.3 instanceof原理分析 113

7.5 内置引用类型和对象 114

7.5.1 String类型 115

7.5.2 Number类型 120

7.5.3 Boolean类型 121

7.5.4 Date类型 121

7.5.5 RegExp类型 124

7.5.6 Math对象 127

7.6 本章小结 128

第8章 函数(下) 129

8.1 IIFE 129

8.2 arguments 131

8.2.1 伪(类)数组 131

8.2.2 arguments的使用 131

8.3 回调函数 132

8.3.1 内置的回调函数 132

8.3.2 自定义回调函数 133

8.4 函数递归 133

8.5 函数中的this 135

8.6 函数也是对象 138

8.7 函数对象的方法 139

8.7.1 call()方法 139

8.7.2 apply()方法 139

8.7.3 bind()方法 140

8.7.4 案例:伪数组转数组 141

8.8 预解析 141

8.8.1 变量提升与函数提升 141

8.8.2 执行上下文与执行上下文栈 143

8.9 闭包 147

8.10 内存管理 150

8.10.1 内存的生命周期 150

8.10.2 垃圾回收 151

8.10.3 内存泄漏与内存溢出 152

8.11 本章小结 154

第9章 数组 155

9.1 数组的概念 155

9.2 数组的基本操作 156

9.2.1 创建数组 156

9.2.2 添加元素 157

9.2.3 遍历数组 159

9.2.4 更新元素 160

9.2.5 删除元素 160

9.3 数组的其他常用方法 162

9.3.1 concat()方法和slice()方法 162

9.3.2 reverse()方法和sort()方法 163

9.3.3 find()方法和findIndex()方法 164

9.3.4 map()方法 165

9.3.5 reduce()方法 165

9.3.6 every()方法和some()方法 166

9.3.7 splice()方法 167

9.4 多维数组 168

9.5 实战案例:冒泡排序 169

9.6 Array的静态方法 170

9.6.1 Array.isArray()方法 170

9.6.2 Array.from()方法 171

9.6.3 Array.of()方法 171

9.7 实战案例:取出数组的最大值和最小值 171

9.8 本章小结 172

第10章 BOM 173

10.1 window对象 173

10.1.1 全局作用域 173

10.1.2 访问客户端对象 174

10.1.3 使用系统对话框 174

10.1.4 打开窗口和关闭窗口 176

10.1.5 超时调用和间歇调用 177

10.2 navigator对象 183

10.2.1 navigator概念 183

10.2.2 浏览器检测方法 184

10.2.3 操作系统检测方法 185

10.3 location对象 185

10.4 history对象 187

10.5 本章小结 188

第11章 DOM 189

11.1 DOM的版本 189

11.2 节点 190

11.2.1 节点关系 190

11.2.2 节点种类 191

11.2.3 节点类型、名称、值 192

11.3 节点的操作之访问节点 194

11.3.1 获取元素基础方法 194

11.3.2 selectors API 197

11.3.3 selectors API和传统方法的比较 198

11.3.4 节点关系中访问元素节点的方法 199

11.3.5 其他获取节点方法 200

11.4 节点的操作之增、删、改操作 200

11.4.1 创建节点 200

11.4.2 创建文本节点 201

11.4.3 插入节点 201

11.4.4 复制节点 202

11.4.5 删除节点 203

11.4.6 替换节点 204

11.5 属性节点 204

11.5.1 属性分类 205

11.5.2 传统属性操作 205

11.5.3 HTML5自定义属性操作 206

11.5.4 案例:字号变大 207

11.6 文本节点 209

11.6.1 innerHTML和innerText 209

11.6.2 textContent 210

11.7 脚本化CSS 211

11.7.1 元素大小 211

11.7.2 元素位置 212

11.7.3 设置与获取元素样式 213

11.7.4 元素的类名操作 214

11.8 文档碎片节点 215

11.9 本章小结 216

第12章 DOM编程之事件 217

12.1 DOM事件流 217

12.1.1 事件冒泡 218

12.1.2 事件捕获 220

12.1.3 标准(混合)型 221

12.2 绑定事件监听 223

12.2.1 HTML事件监听绑定 223

12.2.2 DOM0事件监听绑定 224

12.2.3 DOM2与DOM3事件监听绑定 224

12.2.4 IE事件监听绑定 226

12.3 JavaScript常用事件 226

12.3.1 获取焦点和失去焦点 226

12.3.2 点击事件 228

12.3.3 键盘事件 230

12.3.4 表单事件 231

12.3.5 鼠标事件 233

12.3.6 滚动条事件 239

12.3.7 加载事件 240

12.3.8 滚轮事件 242

12.4 event对象 243

12.5 事件的三个特别处理 244

12.5.1 停止事件冒泡 244

12.5.2 阻止事件默认行为 246

12.5.3 事件委托 246

12.6 本章小结 249

第13章 AJAX 250

13.1 相关理解 250

13.2 JSON 251

13.2.1 JSON数据格式 252

13.2.2 JSON对象 253

13.3 XMLHttpRequest对象 254

13.3.1 XMLHttpRequest 对象介绍 254

13.3.2 XMLHttpRequest level2 254

13.3.3 发送请求相关操作 255

13.3.4 处理响应相关操作 258

13.3.5 进度事件 260

13.3.6 请求超时和终止请求 261

13.3.7 封装ajax()请求函数 262

13.4 跨域 264

13.4.1 JSONP解决跨域问题 264

13.4.2 CORS解决跨域问题 265

13.5 本章小结 265

第14章 异步编程 266

14.1 相关理解 266

14.1.1 单线程与多线程 266

14.1.2 同步与异步 267

14.2 传统异步回调 269

14.2.1 理解 269

14.2.2 回调地狱问题 270

14.3 异步Promise 271

14.3.1 理解 271

14.3.2 使用Promise 271

14.3.3 Promise的链式调用 273

14.3.4 Promise的静态方法 275

14.4 事件循环机制 277

14.4.1 图解事件循环的基本流程 278

14.4.2 宏队列与微队列 279

14.5 本章小结 282

第15章 ES6的其他常用新特性 283

15.1 ES6学习指南 283

15.2 解构赋值 285

15.2.1 对象解构 285

15.2.2 数组解构 287

15.3 对象的扩展 288

15.3.1 Object.is() 288

15.3.2 Object.assign() 289

15.4 Symbol类型 289

15.5 迭代器与for…of循环 291

15.6 扩展运算符 293

15.7 Set结构与Map结构 296

15.7.1 Set 296

15.7.2 Map 298

15.8 Proxy与Reflect 300

15.9 本章小结 303

产品特色