JavaScript有七种基本类型:String、Number、Boolean、null、undefined、Symbol、BigInt;它们值固定、体积小、不可变,直接存储在栈内存中,赋值时复制值本身而非地址。

基本类型在内存中直接存储,意思是值本身被完整地放在栈(Stack)里,不经过中间引用。
哪些是基本类型
JavaScript 有七种基本类型:String、Number、Boolean、null、undefined、Symbol、BigInt。它们共同特点是——值固定、体积小、不可变。
为什么能“直接存”
因为这些类型的取值范围和大小在语言层面是确定的:
- 比如 Number 总是用 64 位双精度浮点数表示,不管存的是
0还是3.1415926,都占 8 字节; - Boolean 只有两个可能值,内部通常用 1 位或 1 字节表示;
- Symbol 和 BigInt 虽然实现更复杂,但 JS 引擎仍保证其值可完整放入栈空间(例如 Symbol 的描述字符串可能在堆,但 Symbol 本身的标识符是栈内值)。
直接存储带来的行为表现
变量赋值时复制的是值本身,不是地址:
立即学习“Java免费学习笔记(深入)”;
let a = 100; let b = a; b = 200; console.log(a); // 100 console.log(b); // 200
这里 a 和 b 各自拥有独立的一份数字 100,修改 b 不会影响 a。这正是“直接存储”最直观的结果。
注意几个常见误解
-
字符串不是对象,即使有方法:虽然
"hello".toUpperCase()看起来像调用对象方法,但每次操作都基于原始值新建临时包装对象,字符串本身仍是栈中不可变值; - null 和 undefined 是真实值,不是“空引用”:它们各自有固定的二进制表示,在栈中占位明确,不指向堆中的任何位置;
-
const 声明基本类型 = 值不可重赋:因为栈里存的就是值,
const x = 42后再写x = 43会报错——引擎禁止修改该栈槽里的内容。


















