图书前言

前言

据GitHub统计,截至2025年,在代码推送量方面,JavaScript仍处于领先地位。这得益于JavaScript语言早期的易用性与应用的广泛性。为了满足多场景的需要,JavaScript语言在功能上可以满足前端的网页交互延伸、后端的服务器处理、高并发环境及图形渲染等使用场景,并展现出了卓越的开发能力。但新版本的JavaScript语言中也包括某些晦涩难懂的新特性,这让一些基础薄弱的开发者望而却步。一方面这些特性在第三方机构或书籍中发布是有滞后性的,另一方面则是很少有文档或书籍从语言的实现角度进行深入剖析。基于此,本书作者希望广大读者通过阅读本书,能够有效解决上述问题。

本书主要内容

本书重点剖析JavaScript语言机制并引入部分规范中的概念,由浅入深、简洁明了,全书共分为三大部分,共16章。

第一部分JavaScript初级,包括第1~4章。

第1章JavaScript发展史,首先介绍了JavaScript建立以来的发展历程,再介绍语言规范的建立与设计原则。

第2章JavaScript类型系统,详细介绍JavaScript语言中原始类型的特点及使用,并深入剖析了内部过程和设计动机。

第3章JavaScript代码组织方式,详细讲解JavaScript脚本及模块环境构建过程,并引入数项模块新提案。

第4章JavaScript语言基础,讲解JavaScript语言中出现的基础概念,为后续学习底层原理打下基础。

第二部分JavaScript高级,包括第5~10章。

第5章函数,详细介绍函数各部分组件概念及使用方式上的差异。

第6章对象,通过对象的常规操作逐步深入规范中对象行为模式的定义。

第7章数组,介绍数组的行为模式及常用方法。

第8章日期与时间,简要介绍Date类的使用与缺陷,以及即将上线的Temporal提案。

第9章国际化,对国际化API的介绍,有助于显著提升开发者的工作效率。

第10章正则表达式,主要介绍新引入的标志特性,以及命名捕获组和模式修饰符等很有用的特性。

第三部分JavaScript进阶,包括第11~16章。

第11章Set和Map,包括Set、Map、WeakSet、WeakMap等类型的应用。

第12章代理与反射,代理是JavaScript语言提供的强大的元编程特性,反射可以模拟语言核心语法。

第13章类,介绍类和传统构造函数在底层上的根本差异,以及应用于类上的全新特性。

第14章迭代器与生成器,深入解析迭代器与生成器的构建方式及执行时的流程。

第15章异步编程,包括Promise、异步函数等内容,并介绍了新的Promise特性。

第16章新特性,扫描本章的二维码可阅读电子文件,主要介绍概念上独立于其他章节的内容,包括显式资源管理、JSON.parse 源文本访问和装饰器。

本书特色

(1) 承上启下,快人一步。

本书介绍JavaScript语言及其规范的发展历程,旨在帮助读者梳理出JavaScript语言演变的清晰脉络,挖掘JavaScript语言中的变与不变。本书涵盖ES 2025新特性并介绍了大量实验性特性,带领读者展望更加现代的JavaScript。

(2) 强化理论,直击根源。

学习JavaScript语言特性的重要性要远远高于学习语言语法,当读者了解特性背后所体现的核心概念后会对语法存在的意义及形式有更深刻的理解,并且本书中引入了部分ECMAScript 262规范中的抽象操作帮助读者刻画执行过程。

(3) 从0到1,建立体系。

以每章开头均引入基础性案例的方式,启发读者问题的解决方向与解决方式,从而形成一个极具关联性的知识体系。

新特性

至本书完成时,部分特性已经可以在新版本的浏览器及 Node 环境中运行,包括但不限于以下特性。

(1) 正则表达式相关: RegExp.escape和RegExp Modifiers。

(2) 模块相关: Deferring Module Evaluation、JSON Modules和Import Attributes。

(3) 国际化相关: Intl Enumeration API、Intl.NumberFormat V3。

(4) 数组及迭代器相关: Array.fromAsync、同步迭代器助手、联合迭代器和迭代器序列。

(5) Temporal。

(6) 装饰器。

(7) 其他: JSON.parse源文本解析、显式资源管理、Math.sumPrecise、Error.isError、New Set methods、Promise.try和void Discard Bindings。

温馨提示: 至本书完成时,Deferring Module Evaluation、联合迭代器、迭代器序列、Temporal、装饰器、显式资源管理、Math.sumPrecise和void Discard Binding等特性尚未在新版浏览器环境中得到支持。读者可扫描“源代码”二维码,下载“实验特性操作指导文档”,进行辅助学习。

配套资源

为便于教与学,本书配有源代码、教学课件、教学大纲、实验指导书、习题题库、期末试卷及答案。

(1) 获取源代码方式: 先刮开并用手机版微信App扫描本书封底的文泉云盘防盗码,授权后再扫描下方二维码,即可获取。

源代码

(2) 其他配套资源可以扫描本书封底的“书圈”二维码,关注后回复本书书号,即可下载。

读者对象

本书主要面向广大从事Web前端工作的开发人员,也适合任何使用或学习JavaScript语言的高等院校的在读学生及编程爱好者。由于本书中的部分内容是在探究语言核心机制,因此并不完全适合初学者。

致谢

本书得以完成,要感谢当初毅然做出这一决定的我,这是从学习者向写作者转变的一次大胆尝试。在整个漫长而繁复的写作过程中,正是家人的支持,使我得以坚持完成本书。同时,谨向以下专业人士致以诚挚的谢意(排名不分先后): 周爱民、Hax(Technical Committee 39特邀技术专家)、Jack(Technical Committee 39代表)、迷渡(Deno核心贡献者)。亦感谢友人陈红薇为本书绘制部分图示。此外,本书部分观点源自Technical Committee 39等开源社区。在此谨向所有为JavaScript语言发展作出贡献的同仁致以崇高敬意。

在编写本书的过程中,作者参考了诸多相关资料,在此对相关资料的作者表示衷心的感谢。限于个人水平和时间仓促,书中难免存在疏漏之处,欢迎广大读者批评指正。

作者2026年1月