📅  最后修改于: 2023-12-03 14:50:31.651000             🧑  作者: Mango
在编程语言中,常见的两种数据类型是原始类型和引用类型。这两种类型在如何声明、存储和访问数据方面有很大的区别,理解这些区别对于编写高效的代码非常重要。
原始类型指的是一些基本的数据类型,如数字、布尔值和字符等。在 JavaScript 中,有六种原始类型:
Number
String
Boolean
Null
Undefined
Symbol
声明原始类型
声明原始类型变量时,只需要给变量名赋值一个原始类型的值即可,如:
let num = 1;
let str = "hello";
let bool = true;
let empty = null;
let undef = undefined;
let symbol = Symbol("hello");
原始类型的存储和访问
原始类型的值存储在栈内存中,直接访问栈中的数据即可。这也是原始类型比较快的原因之一。例如:
let a = 1;
let b = a;
b = 2;
console.log(a); // 1
console.log(b); // 2
上面的代码中,虽然 b
的值改变了,但是 a
的值不变,因为 a
和 b
存储在栈内存中的不同位置。
引用类型指的是一些非基本的数据类型,如对象、数组和函数等。在 JavaScript 中,对象是最常用的引用类型。
声明引用类型
声明对象时,需要使用 new
关键字创建一个实例对象。例如:
let obj = new Object();
还可以使用对象字面量的方式来创建对象:
let obj = {
name: "joe",
age: 18,
sayHello: function () {
console.log("hello");
}
};
引用类型的存储和访问
引用类型的值不像原始类型的值那样直接存储在栈内存中,而是存储在堆内存中。给引用类型变量赋值时,实际上是将堆内存中的地址赋值给了变量。
let obj1 = { name: "joe", age: 18 };
let obj2 = obj1;
obj2.name = "kevin";
console.log(obj1.name); // "kevin"
console.log(obj2.name); // "kevin"
上面的代码中,obj2
实际上是 obj1
的引用,两个变量都指向同一个对象。因此,当修改 obj2
的属性时,obj1
的属性也被修改了。
原始类型和引用类型在声明、存储和访问数据上有很大的区别。理解这些区别有助于编写高效的代码。