目录 第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写在最后