新書推薦:
《
古典的回響:溪客舊廬藏明清文人繪畫
》
售價:NT$
1990.0
《
根源、制度和秩序:从老子到黄老学(王中江著作系列)
》
售價:NT$
550.0
《
索恩丛书·北宋政治与保守主义:司马光的从政与思想(1019~1086)
》
售價:NT$
345.0
《
掌故家的心事
》
售價:NT$
390.0
《
农为邦本——农业历史与传统中国
》
售價:NT$
340.0
《
郊庙之外:隋唐国家祭祀与宗教 增订版 (三联·哈佛燕京学术丛书)
》
售價:NT$
480.0
《
小麦文明:“黄金石油”争夺战
》
售價:NT$
445.0
《
悬壶杂记全集:老中医多年临证经验总结(套装3册) 中医医案诊疗思路和处方药应用
》
售價:NT$
614.0
|
編輯推薦: |
本书采用ES5和ES6融合的方式编写,兼顾了主流应用和发展趋势,书中知识点结合实际开发讲解演示。
|
內容簡介: |
本书采用ES5和ES6融合的方式编写,兼顾了主流应用和发展趋势,书中知识点结合实际开发讲解演示。本书从JavaScript额的历史开始讲解,由浅入深地带领读者逐渐走入JavaScript的世界。本书内容包括:变量、基本数据类型、运算符和表达式、语句、函数、对象、数组、BOM、DOM、AJAX、异步编程及ES6新特性等。本书语言通俗易懂,案例贴近实际工作需求,内容全面,深入浅出地简洁了前端开发需掌握的知识点。与此同时,本书还对一些底层实现进行了介绍,让读者在阅读完本书之后对JavaScript有更深入的理解。
|
關於作者: |
尚硅谷教育是一家专业的IT教育培训机构,开设了JavaEE、大数据、HTML5前端等多门学科,在互联网上发布的JavaEE、大数据、HTML5前端、区块链、C语言、Python等技术视频教程广受赞誉。
|
目錄:
|
第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
|
內容試閱:
|
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站搜索尚硅谷官方账号,免费在线学习。
感谢电子工业出版社的李冰编辑,是您的精心指导让本书得以面世,也感谢所有为本书内容编写提供技术支持的老师们付出的努力。
尚硅谷教育
|
|