JavaScript 变量、引用类型与日期正则表达式详解
1. JavaScript 变量与内存管理
1.1 变量类型
JavaScript 变量可存储两种类型的值:原始值和引用值。
- 原始值 :具有七种原始数据类型,分别是 Undefined、Null、Boolean、Number、BigInt、String 和 Symbol。原始值大小固定,存储在栈内存中。当从一个变量复制原始值到另一个变量时,会创建该值的第二个副本。
- 引用值 :是对象,存储在堆内存中。包含引用值的变量实际上只包含指向对象的指针,而非对象本身。将引用值复制到另一个变量时,仅复制指针,因此两个变量最终引用同一个对象。
1.2 执行上下文与作用域
所有变量(原始值和引用值)都存在于执行上下文中,执行上下文决定了变量的生命周期以及代码的哪些部分可以访问该变量。执行上下文可总结如下:
- 执行上下文存在于全局(称为全局上下文)、函数内部和块内部。
- 每次进入新的执行上下文时,会创建一个作用域链来搜索变量和函数。
- 函数或块的局部上下文不仅可以访问该作用域内的变量,还可以访问任何包含上下文和全局上下文中的变量。
- 全局上下文只能访问全局上下文中的变量和函数,不能直接访问局部上下文中的任何数据。
- 变量的执行上下文有助于确定何时释放内存。
1.3 垃圾回收
JavaScript 是一个垃圾回收的编程环境,开发者无需关心内存分配或回收。JavaScript 的垃圾回收例程可总结如下: