JavaScript 数据类型

一、是什么

JavaScript 中的数据类型用于描述值的结构与行为。

分为两大类:基本类型 + 引用类型

二、基本数据类型(7种)

  • string
  • number
  • boolean
  • null
  • undefined
  • symbol
  • bigint

特点: 👉 存储在栈中,值不可变

三、引用类型

  • object
  • array
  • function
  • date
  • regexp

特点: 👉 存储在堆中,变量保存的是引用地址

四、核心区别

1. 存储方式

基本类型:栈(值)

引用类型:堆(地址)

内存示意图

栈(Stack)                    堆(Heap)
┌─────────────┐              ┌─────────────────┐
│ a: 10       │              │                 │
├─────────────┤              │  obj1/obj2 指向 │
│ b: 20       │              │  ┌───────────┐  │
├─────────────┤              │  │ { name:   │  │
│ obj1: 0x001 ├──────────────┼─→│   '李四'  │  │
├─────────────┤              │  │ }         │  │
│ obj2: 0x001 ───────────────┼─→│           │  │
├─────────────┤              │  └───────────┘  │
│ c: 'hello'  │              │                 │
└─────────────┘              └─────────────────┘

2. 赋值行为

let a = 1;
let b = a;
b = 2;

console.log(a); // 1

👉 基本类型拷贝的是值

let obj1 = { a: 1 };
let obj2 = obj1;

obj2.a = 2;

console.log(obj1.a); // 2

👉 引用类型共享地址

五、typeof & instanceof

typeof

typeof 1; // number
typeof 'a'; // string
typeof null; // object(历史bug)

instanceof

判断对象类型:

[] instanceof Array; // true

六、总结

JavaScript 类型系统的本质:“值类型 + 引用地址模型”