第55课:严格模式——"use strict" 限制、静默失败转异常、模块自动严格严格模式(Strict Mode)是 ECMAScript 5 引入的一种受限的 JavaScript 执行变体。它刻意排除了语言中一些容易出错、不安全或设计不当的特性,使代码在更“干净”的环境下运行。在现代 JavaScript 开发中,严格模式几乎是默认开启的——ES Modules(import/export)和 class 定义自动处于严格模式。理解严格模式的具体限制、它如何将过去的“静默失败”转为显式异常,以及它对代码风格的约束,是写出安全、可维护、向前兼容的 Jav...
第54课:错误处理与调试——try-catch-finally、自定义错误、debugger、Source Map程序运行过程中不可避免地会发生错误。JavaScript 提供了 try-catch-finally 语句来捕获和处理运行时错误,避免整个程序崩溃。对于开发者,浏览器和 Node.js 提供了 debugger 语句和开发者工具来定位和修复代码缺陷。而 Source Map 则是连接压缩后生产代码与原始源代码的桥梁,使线上调试成为可能。本节课将系统讲解错误类型、异常捕获语句的完整语法、自定义错误类的设计模式,以及浏览器调试工具的核心用法和 Source Map 的生成原理。
...
第53课:字符串与正则表达式——模板字符串、match/replace、正则语法、RegExp 对象字符串是文本的载体,正则表达式是模式匹配的利器。在表单验证、数据提取、搜索替换、日志分析等场景中,字符串方法与正则表达式密不可分。本节课将系统讲解 ES6 模板字符串的标签函数与高级用法、字符串的原型方法(特别是与正则配合的 match、replace、search、split),以及 JavaScript 正则表达式的完整语法——从元字符、量词、分组到断言——最后介绍 RegExp 构造函数和标志位的行为细节。
1. 模板字符串的进阶用法1.1 多行字符串与表达式插值模板字符...
第52课:数组与常用方法——遍历、map/filter/reduce、splice/slice、类数组数组是 JavaScript 中最常用的数据结构,用于存储有序的、可索引的数据集合。JavaScript 的数组是动态的(长度可变)、无类型限制的(一个数组内可混合存放任何类型),并且拥有超过 30 个内置方法。本节课将系统分类讲解数组的核心方法——从增删改查的基本操作,到 map/filter/reduce 等函数式迭代方法,再到数组与类数组对象之间的转换技巧。
1. 数组的创建与基础属性1.1 创建数组的四种方式1234567891...
第51课:对象与原型(下)——原型链、prototype、__proto__、继承与 class 语法糖在 JavaScript 中,继承不是通过“类”实现的,而是通过原型(Prototype) 实现的。每个对象都有一个内部属性 [[Prototype]],指向另一个对象,这个被指向的对象就是原型。当试图访问一个对象的属性时,如果该对象自身没有这个属性,JavaScript 就会沿着原型链向上查找,直到找到该属性或到达原型链的终点 null。这套机制是所有现代框架和语言特性的底层基础。本节课将系统讲解原型链的构建方式、构造函数与 prototype 的关系、ES5 继承模式以及 ES6 ...
第50课:对象与原型(上)——对象字面量、属性描述符与 Object 静态方法在 JavaScript 中,对象(Object) 是核心的复合数据类型。几乎所有非原始值(包括函数、数组、正则表达式)都是对象。理解对象如何创建、如何组织属性、以及属性本身的元信息如何控制对象行为,是深入 JavaScript 语言的关键一步。本节课将聚焦于对象字面量的增强语法、属性描述符(Property Descriptor)的精确控制、以及 Object 构造函数上最重要的静态方法。原型链将在第 51 课详述。
1. 对象字面量:创建对象的最简方式对象字面量 {} 是 JavaSc...
第49课:作用域与闭包——词法环境、闭包原理、实战应用与陷阱闭包是 JavaScript 最核心也最容易被误解的概念之一。它并非某种需要刻意创建的“特殊结构”,而是函数在词法环境中被定义时自然产生的内建特性。理解闭包的关键在于掌握作用域链和词法环境的工作机制。本节课将带你从执行上下文和变量环境出发,深入到闭包的形成原理、内存影响、经典应用场景(模块化、函数工厂、部分应用),以及循环中闭包陷阱的多种解决方案。
1. 作用域与词法环境1.1 三种作用域JavaScript 中有三种作用域类型:
作用域类型
声明方式
范围
全局作用域
在任何函数或块之外声明
整个程序,<s...
第48课:函数基础——声明、表达式、箭头函数、参数默认值与剩余参数函数是 JavaScript 的一等公民(First-Class Citizen)——它们可以被赋值给变量、作为参数传递、作为返回值返回。函数是封装可复用逻辑的基本单元。在 JavaScript 中,创建函数有三种主要方式:函数声明、函数表达式和箭头函数。每种方式在提升行为、this 绑定和语法简洁性上各有差异。理解这些差异,是写出模块化、可测试、可维护代码的前提。
1. 函数声明(Function Declaration)函数声明是最传统、最直观的函数定义方式。
12345function greet(name) ...
第47课:流程控制——条件语句与循环程序默认按从上到下的顺序执行每一行代码。控制流(Control Flow)打破了这种线性执行,允许程序根据不同条件选择性地执行代码块,或重复执行某段逻辑。JavaScript 提供了两类核心控制流工具:条件语句(if-else、switch、三元运算符)和循环语句(for、while、do-while)。掌握它们的语法细节、适用场景和性能特性,是编写任何非平凡程序的必备能力。
1. if-else 条件分支if 语句根据布尔表达式的结果来决定执行哪个代码块。
1.1 基本语法1234567if (condition) { // condi...
第46课:运算符与表达式运算符是 JavaScript 中执行计算、比较、赋值和逻辑判断的符号。表达式是由运算符和操作数组成的代码片段,计算后会产出一个值。理解每一种运算符的语法、返回值、副作用以及它们之间的优先级和结合性,是写出正确且可预测的 JavaScript 代码的前提。本节课将逐一拆解七大类别运算符的核心行为、隐式类型转换规则以及常见易错点,并通过综合表达式实战来巩固运算符优先级的心智模型。
1. 算术运算符:数值计算与 + 的特殊性算术运算符接受数值操作数,返回一个数值。除加法外,其余运算符仅用于数值运算。
1.1 六种基础算术运算符
运算符
名称
示例
结果
说明
...