JavaScript 中的值可以分为两大类:基本数据类型(Primitive Types)和引用数据类型(Reference Types)。
基本数据类型(Primitive Types):
- Number(数字): 用于表示数值,包括整数和浮点数。
- String(字符串): 用于表示文本。
- Boolean(布尔): 用于表示逻辑值,即
true或false。 - Undefined: 表示未定义,通常是变量声明但未赋值时的默认值。
- Null: 表示空值或不存在的对象。
- Symbol: ES6 新增,表示唯一标识符。
基本数据类型的值存储在栈内存中,它们的大小固定,直接存储在变量访问的位置。
引用数据类型(Reference Types):
- Object(对象): 用于表示复杂数据结构,包括普通对象、数组、函数等。
- Array(数组): 一种特殊的对象,用于存储有序的数据集合。
- Function(函数): 一种特殊的对象,具有可执行的代码块。
引用数据类型的值存储在堆内存中,变量实际上存储的是该对象在堆内存中的引用地址。多个变量可以引用同一个对象,修改其中一个变量的值会影响到其他引用该对象的变量。
内存图示例:
// 基本数据类型
let num = 42; // 栈内存:num -> 42
let str = "Hello"; // 栈内存:str -> "Hello"
let bool = true; // 栈内存:bool -> true
// 引用数据类型
let obj = { // 堆内存:{ key: value }
key: "value"
}; // 栈内存:obj -> 堆内存中对象的引用地址
在内存中,基本数据类型直接存储在变量的位置上,而引用数据类型存储的是对象在堆内存中的引用地址。这样的设计使得 JavaScript 具有灵活的数据结构和高效的内存利用。