新書推薦:
《
可转债——新手理财的极简工具
》
售價:NT$
296.0
《
新加坡教育:神话与现实
》
售價:NT$
439.0
《
“口袋中的世界史”第一辑·冷战中的危机事件
》
售價:NT$
1326.0
《
绝美的奥伦堡蕾丝披肩编织
》
售價:NT$
806.0
《
狂飙年代:18世纪俄国的新文化和旧文化(第二卷)
》
售價:NT$
806.0
《
万有引力书系 纳粹亿万富翁 德国财富家族的黑暗历史
》
售價:NT$
500.0
《
中国常见植物野外识别手册:青海册
》
售價:NT$
347.0
《
三星堆对话古遗址(从三星堆出发,横跨黄河流域,长江流域,对话11处古遗址,探源多元一体的中华文明)
》
售價:NT$
398.0
|
編輯推薦: |
本书主要讲了JavaScript基础语法,并涵盖了从ES6到ES2020的新特性,也包括一些即将在ES2021发布的新特性,并且以较为全面和深入的方式介绍了这些语法和新特性的概念、使用方法和注意事项。每个章节都有配套的示例,对于较难理解的部分还会提供视频讲解,旨在让读者真正掌握这些语法和新特性,在以后的开发过程中不再有基础语法上的疑问。
|
內容簡介: |
随着 JavaScript 逐渐成为通用的编程语言,它在软件开发中的地位越来越高,已经不再只是给 HTML 编写交互的客户端脚本语言了,而是可以胜任前端、后端、大数据和机器学习等应用的全面语言。 JavaScript 从 2015 年以来走向规范化后,新出了很多新特性,而市面上少有书籍介绍它们,所以本书对ES6 到 ES2021 的新特性作了较为详尽和深入的介绍,并且全书的语法可以适应各端开发人员所需。 本书共 14 章,涵盖了 JavaScript 的发展历史、运行环境、基础语法、运算符、数组、函数式编程、面向对象基础、原型链、异步编程、Event Loop、模块化、迭代器和生成器、Symbol、Reflect 和 Proxy 的概念和使用方法,每个章节都有配套的示例,对于较难理解的部分还会提供视频讲解,旨在让读者真正掌握这些语法和新特性,在以后的开发过程中不再有基础语法上的疑问。后给出了两个 JavaScript 综合案例,分别使用面向对象编程风格和函数式编程风格,以掌握 JavaScript 的不同开发范式。 本书非常适合有其他编程语言基础或对 JavaScript 语言有初步了解的工程师阅读,如果是初学者,也可以通过仔细阅读加练习达到完全掌握的目的。
|
關於作者: |
张旭乾,毕业于美国史蒂文斯理工学院,硕士学位,主攻云计算和分布式系统方向,并获得专业认证。拥有13年编程经验,从事过全栈、后端、前端和移动端的开发,对软件的整体设计和开发有着丰富的经验,并对软件工程化的管理有所研究。因此决定通过内容创作,让开发者能从技能到思想有全面的提升,包括动画形式的视频、成体系的前端开发课程和通俗易懂的技术文章等,坚信前端与设计不分家。
|
目錄:
|
第1章简介
1.1发展历史
1.2ECMAScript提案流程
1.3运行JavaScript
1.4浏览器环境
1.5Node.js环境
1.6开发工具
1.7基础语法概览
1.7.1变量与数据类型
1.7.2运算符
1.7.3流程控制
1.7.4函数
1.8严格模式
1.9小结
第2章基础知识
2.1程序结构
2.2变量
2.2.1定义变量
2.2.2变量的命名规范
2.3常量
2.3.1定义常量
2.3.2常量的命名规范
2.4数据类型
2.4.1typeof
2.4.2Number类型
2.4.3Boolean类型
2.4.4String类型
2.4.5Null与Undefined类型
2.4.6Object类型
2.4.7Symbol类型
2.4.8BigInt类型
2.4.9Array类型
2.4.10基本类型的特点
2.5数据类型转换
2.5.1隐式类型转换
2.5.2显式类型转换
2.6小结
第3章运算符
3.1赋值运算符
3.2数学运算符
3.2.1一元数学运算符
3.2.2二元数学运算符
3.2.3计算顺序与优先级
3.3比较运算符
3.4逻辑运算符
3.5Nullish Coalescing运算符
3.6三目运算符
3.7位运算符
3.7.1与运算
3.7.2或运算
3.7.3异或运算
3.7.4取反运算
3.7.5左移运算
3.7.6右移运算
3.7.7补零右移运算
3.8组合运算符
3.9其他运算符
3.10优先级表
3.11小结
第4章流程控制
4.1语句
4.2if...else语句
4.3if...else if...else语句
4.4switch...case语句
4.5while语句
4.6do...while语句
4.7for语句
4.8break和continue语句
4.9label语句
4.10小结
第5章函数
5.1声明函数
5.2调用函数
5.3函数表达式
5.4箭头函数
5.5可选与默认参数
5.6可变长度参数
5.6.1arguments
5.6.2rest运算符
5.7回调函数
5.8作用域
5.8.1全局作用域
5.8.2局部作用域
5.8.3提升机制
5.8.4临时隔离区
5.9闭包
5.10递归
5.11高阶函数
5.12柯里化
5.13Memoization
5.14纯函数
5.15小结
第6章数组
6.1创建数组
6.2访问数组
6.3修改元素
6.4删除元素
6.5栈和队列模式
6.6数组遍历
6.7数组过滤和测试
6.8数组排序
6.9数组连接
6.10数组裁切
6.11搜索元素
6.12数组与字符串
6.13数组填充
6.14数组复制
6.15扁平化
6.16解构赋值
6.17扩展语法
6.18多维数组
6.19小结
第7章对象
7.1创建对象
7.1.1简化属性
7.1.2计算属性名
7.2访问与添加对象属性
7.3遍历对象属性
7.4删除对象属性
7.5getters和setters
7.6属性描述符
7.6.1配置属性描述符
7.6.2配置多个属性描述符
7.6.3获取属性描述符
7.6.4不可扩展对象
7.7原型
7.7.1获取原型对象
7.7.2原型链
7.7.3Object.create()
7.8构造函数
7.8.1定义
7.8.2this
7.9toString()和valueOf()
7.10call()、apply()与 bind()
7.10.1call()
7.10.2apply()
7.10.3bind()
7.11对象复制
7.12解构赋值与rest运算符(对象)
7.13with语句
7.14值传递与引用传递
7.15小结
第8章面向对象基础
8.1简介
8.2创建类
8.2.1定义构造函数
8.2.2实例化对象
8.2.3添加行为
8.2.4注意事项
8.3实现继承
8.4抽象类
8.5成员变量
8.6静态成员
8.7小结
第9章字符串与正则表达式
9.1字符串介绍
9.2字符串遍历
9.3字符串操作
9.3.1拼接
9.3.2裁切
9.3.3搜索
9.3.4分割
9.3.5其他操作
9.4模板字符串
9.5正则表达式介绍
9.6正则表达式语法
9.6.1特殊字符匹配
9.6.2匹配次数
9.6.3区间、逻辑和界定符
9.6.4分组
9.7字符串中的正则
9.8RegExp对象
9.9常见的正则表达式
9.10小结
第10章内置对象
10.1基本类型包装对象
10.2Math
10.3Date
10.3.1获取日期
10.3.2修改日期
10.3.3解析日期
10.3.4日期比较
10.4JSON
10.4.1序列化
10.4.2反序列化
10.5Set
10.6Map
10.7迭代器、可迭代对象和生成器
10.7.1迭代器
10.7.2可迭代对象
10.7.3生成器与生成器函数
10.8TypedArray
10.8.1创建类型数组
10.8.2属性和方法
10.9Symbol
10.9.1Symbol.match
10.9.2Symbol.toStringTag
10.9.3Symbol.isConcatSpreadable
10.9.4Symbol.toPrimitive
10.9.5Symbol.hasInstance
10.9.6Symbol.species
10.10Console
10.10.1调试
10.10.2显示
10.10.3记录
10.11Reflect
10.12Proxy
10.12.1处理对象
10.12.2不变性
10.12.3可回收代理
10.13小结
第11章异常处理
11.1捕获异常
11.2throw抛出异常
11.3Error对象
11.4自定义异常
11.5finally
11.6捕获多个异常
11.7小结
第12章异步编程
12.1setTimeout()
12.2setInterval()
12.3Promise
12.3.1创建Promise
12.3.2链式调用
12.3.3处理异常
12.3.4执行多个Promise
12.4async/await
12.4.1定义异步函数
12.4.2使用await
12.4.3处理异常
12.5异步迭代
12.6Event Loop
12.6.1调用栈
12.6.2Event Loop
12.7小结
第13章模块化
13.1实现模块化的方式
13.2模块化配置
13.2.1导出模块
13.2.2导入模块
13.2.3默认导出
13.2.4别名导入
13.2.5再导出
13.2.6动态导入
13.3Node.js原生模块管理
13.4小结
第14章案例与总结
14.1面向对象设计示例: 线上服装商城
14.1.1需求
14.1.2Clothing衣服类
14.1.3Store商城类
14.1.4User用户类
14.1.5Address地址类
14.1.6Cart购物车类
14.1.7Order订单类
14.1.8示例
14.2函数式编程示例: 扩展数组API
14.2.1元素
14.2.2交集
14.2.3并集
14.2.4差集
14.2.5对称差集
14.2.6求和
14.2.7平均值
14.2.8范围
14.2.9分割
14.2.10频次
14.2.11导出
14.2.12调用示例
14.3下一步规划
14.3.1前端
14.3.2后端
14.3.3特定领域
14.4写在后
|
內容試閱:
|
感谢你从众多有关JavaScript的书中选择本书。自从分享前端教学视频之后,笔者发现JavaScript基础是阻碍开发者编写前端、后端应用的绊脚石,所以想通过一种比较系统的、全面的途径整合JavaScript基础知识和特性。后来机缘巧合,收到清华大学出版社编辑的邀请编写一本关于JavaScript的书,此前也曾想过出一本书,但是由于工作和时间的缘故都放弃了,而现在正好有空闲的时间,所以就想利用这次机会把笔者对JavaScript的理解和经验编纂整理成书,帮助读者学习JavaScript。如果你有其他语言编程经验或有过JavaScript的开发经验,则会对理解本书的内容更加有帮助,但是如果你是编程初学者,则可以把本书作为长期学习目标,边实践边总结同样可以完全掌握。
本书主要讲解JavaScript基础语法,并涵盖了从ES6到ES2020的新特性,也包括一些即将在ES2021发布的新特性,以较为全面和深入的方式介绍这些语法和新特性的概念、使用方法和注意事项。由于JavaScript发展到今天已经成为通用的编程语言,可以开发前端、后端、移动端、机器学习、数据可视化等行业的应用,而且每种开发环境下所提供的JavaScript功能和特性均不相同,所以本书有意去掉了HTML、CSS、DOM操作及Node.js API的介绍,目的就是让全职业的JavaScript工程师都可以阅读,无论你是前端工程师、Node.js工程师、用户体验设计师、算法工程师还是数据工程师,在无须关注特定领域API的基础上,能够尽可能全、尽可能快地掌握JavaScript语法本身,以便于在后期开发的过程中不再遇到语言、语法上的问题。至于特定领域的内容,每个领域都可以单独成书,而编写本书的初衷并不是大而全,不过本书的后一章会根据各个职业的特点给出一个大体的学习方向,可以让读者参考它们并继续深入。
在内容编排上,本书基本按照由易到难的顺序对知识点进行排列,不过即便如此,不同章节之间仍有很多交叉引用,因为学习编程并不是线性的,经常需要用到其他章节的知识点介绍某章的某个概念,如果有不理解的地方,则可以先暂时跳过,待看完一遍本书后再回过头来研究之前跳过的部分。本书共14章,内容如下:
第1章主要介绍为什么学习JavaScript、JavaScript的发展历史,以及如何编写并运行JavaScript代码和语法概览。
第2章介绍JavaScript程序的基础结构、如何定义变量并保存不同数据类型的数据、每种数据类型的特点和取值范围,包括ES6新定义的Symbol和ES2020新定义的BigInt类型,以及不同数据类型之间的相互转换。
第3章介绍运算符的概念及分类、如何使用JavaScript进行数学运算、逻辑比较、逻辑运算、位运算,以及不同运算符之间的优先级,还介绍ES2020中定义的Nullish Coalescing(空值合并)运算符。
第4章介绍语句和语句块的概念,以及在JavaScript中如何定义分支语句、循环语句和中断语句。
第5章介绍JavaScript的语法核心——函数的概念、定义和使用方法,函数参数,箭头函数,闭包及函数式编程中的一些基本概念,如递归、高阶函数、柯里化、Memoization等。
第6章介绍数组的概念和用法、队列和栈模式、数组中常用的API,如遍历、过滤、排序、裁切、搜索、reduce、扁平化等操作,以及针对数组的解构赋值和扩展运算符。
第7章介绍JavaScript常用的数据类型——对象的定义方法、访问和修改对象的属性,属性描述符,getters和setters,原型及原型链的概念,构造函数及针对对象的解构赋值和扩展运算符的用法。
第8章在对象的基础上介绍ES6新出的class关键字的用法,并借此介绍面向对象的基本概念、如何实现继承和抽象类、成员和静态成员的区别,以及使用私有成员保护类的数据。
第9章介绍字符串和正则表达式的概念,因为字符串在编程中的用途为广泛,所以在单独的章节介绍它提供的API,以及如何使用正则表达式对字符串进行匹配。
第10章介绍JavaScript的内置对象,如与数学相关的Math、与日期相关的Date、与对象表示相关的JSON、Set和Map数据结构,以及迭代器和生成器、TypedArray、Symbol类型的高级用法、Reflect和Proxy的概念和用法等。
第11章介绍异常处理方式和Error对象的扩展方法,以及try...catch...finally语句的用法。
第12章介绍JavaScript异步编程的概念、setTimeout()和setInterval()的用法和区别、Promise的使用方法及与传统回调函数的区别、async/await关键字的使用方法、异步迭代器和生成器,以及Event Loop的原理。
第13章介绍模块化实现的方式,本章把语法分为ES6和Node.js两种,因为它们的语法规范并不相同且都十分常用,所以分别介绍如何使用ES6语法和Node.js的CommonJS方式导出、导入模块。
第14章给出两个JavaScript编程综合案例,展示面向对象编程和函数式编程的两种风格,同时给出了学完本书后的一些发展方向,并针对前端、后端、机器学习和数据工程师分别总结了比较重要的概念和JavaScript库,以便于了解下一步该如何进行。
本书中对于较复杂的示例会提供源代码,命名遵循章节/概念 编号.js的规则。例如chapter2/string1.js,同一概念的示例后边按顺序对编号进行加1,源代码目录会使用注释的方式标注在示例代码的第1行。
在本书的编写过程中,感谢赵佳霓编辑对内容和结构上的指导,以及细心的审阅,让本书更加完善和严谨,也感谢出版社的排版、设计、审校等所有参与本书修订过程的工作人员,有了你们的支持才会有本书的出版。另外感谢笔者的家人,在笔者专心写作的时候给了笔者无尽的关怀和耐心的陪伴,还感谢笔者的朋友、同学和同事,在笔者有问题和困难时及时地提供了帮助。
尽管本书经过多次检查,但难免会有疏漏和解释不到位的情况,敬请读者批评指正。
扫描下方二维码可获取本书源代码。
本书源代码
再次感谢选择本书!
张旭乾2022年1月
|
|