基本类型与引用类型,JavaScript 变量奥秘的探寻之旅
2024-01-31 13:45:30
上次我们对 JavaScript 中的变量,在内存中的存储形式有了一定的了解。内存空间分为两种:栈内存与堆内存。下面我们从一个问题出发,引出我们的主题“基本数据与引用类型”,开启我们的探索之旅吧!
##基本类型与引用类型的区分
变量的类型
JavaScript中变量可以分为两种类型:基本类型和引用类型。基本类型包括number、string、boolean和null。引用类型包括object、array、function。
基本类型的值直接存储在变量中,而引用类型的值则存储在堆内存中,变量中存储的是该值的内存地址。这意味着基本类型变量的值是不可变的,而引用类型变量的值是可变的。
基本类型与引用类型比较
基本类型和引用类型在以下几个方面存在差异:
特性 | 基本类型 | 引用类型 |
---|---|---|
值的存储 | 直接存储在变量中 | 存储在堆内存中,变量中存储的是该值的内存地址 |
值的可变性 | 不可变 | 可变 |
比较方式 | 按值比较 | 按引用比较 |
赋值方式 | 复制值 | 复制引用 |
传递方式 | 按值传递 | 按引用传递 |
基本类型变量
基本类型变量的值直接存储在变量中。这意味着当您对基本类型变量进行赋值时,新的值会覆盖旧的值。例如:
let a = 10;
a = 20;
console.log(a); // 输出:20
引用类型变量
引用类型变量的值存储在堆内存中,变量中存储的是该值的内存地址。这意味着当您对引用类型变量进行赋值时,新的值不会覆盖旧的值。相反,新的值会存储在堆内存中,变量中的内存地址会指向新的值。例如:
let a = [1, 2, 3];
a = [4, 5, 6];
console.log(a); // 输出:[4, 5, 6]
##基本类型与引用类型的转换
您可以使用内置函数将基本类型转换为引用类型,反之亦然。
基本类型转换为引用类型
要将基本类型转换为引用类型,可以使用以下函数:
Number()
:将数字转换为 Number 对象。String()
:将字符串转换为 String 对象。Boolean()
:将布尔值转换为 Boolean 对象。
例如:
let a = 10;
a = new Number(a);
console.log(a); // 输出:Number {[[PrimitiveValue]]: 10}
引用类型转换为基本类型
要将引用类型转换为基本类型,可以使用以下函数:
.valueOf()
:返回对象的原始值。.toString()
:返回对象的字符串表示形式。.toNumber()
:返回对象的数字表示形式。.toBoolean()
:返回对象的布尔表示形式。
例如:
let a = new Number(10);
a = a.valueOf();
console.log(a); // 输出:10
##总结
在 JavaScript 中,变量可以分为基本类型和引用类型。基本类型包括number、string、boolean和null。引用类型包括object、array、function。
基本类型的值直接存储在变量中,而引用类型的值则存储在堆内存中,变量中存储的是该值的内存地址。这意味着基本类型变量的值是不可变的,而引用类型变量的值是可变的。
您可以使用内置函数将基本类型转换为引用类型,反之亦然。