JavaScript 有几种类型的值?你能画一下他们的内存图吗?

66 阅读1分钟

JavaScript 中的值可以分为两大类:基本数据类型(Primitive Types)和引用数据类型(Reference Types)。

基本数据类型(Primitive Types):

  1. Number(数字): 用于表示数值,包括整数和浮点数。
  2. String(字符串): 用于表示文本。
  3. Boolean(布尔): 用于表示逻辑值,即 truefalse
  4. Undefined: 表示未定义,通常是变量声明但未赋值时的默认值。
  5. Null: 表示空值或不存在的对象。
  6. Symbol: ES6 新增,表示唯一标识符。

基本数据类型的值存储在栈内存中,它们的大小固定,直接存储在变量访问的位置。

引用数据类型(Reference Types):

  1. Object(对象): 用于表示复杂数据结构,包括普通对象、数组、函数等。
  2. Array(数组): 一种特殊的对象,用于存储有序的数据集合。
  3. Function(函数): 一种特殊的对象,具有可执行的代码块。

引用数据类型的值存储在堆内存中,变量实际上存储的是该对象在堆内存中的引用地址。多个变量可以引用同一个对象,修改其中一个变量的值会影响到其他引用该对象的变量。

内存图示例:

// 基本数据类型
let num = 42;          // 栈内存:num -> 42

let str = "Hello";     // 栈内存:str -> "Hello"

let bool = true;       // 栈内存:bool -> true

// 引用数据类型
let obj = {            // 堆内存:{ key: value }
  key: "value"
};                      // 栈内存:obj -> 堆内存中对象的引用地址

在内存中,基本数据类型直接存储在变量的位置上,而引用数据类型存储的是对象在堆内存中的引用地址。这样的设计使得 JavaScript 具有灵活的数据结构和高效的内存利用。