内存层面
- 原始类型:原始类型(如
string
、number
、boolean
、null
、undefined
、symbol
)在内存中占据固定大小的空间,它们的值直接存储在栈内存中。
- 引用类型:引用类型(如
Object
、Array
、Function
)的值存储在堆内存中,而在栈内存中存储的是指向堆内存中实际数据的引用地址。
赋值结果
- 原始类型:当对原始类型变量进行赋值操作时,会在栈内存中创建一个新的值,与原变量相互独立。修改其中一个变量的值,不会影响另一个变量。
let num1 = 5;
let num2 = num1;
num2 = 10;
console.log(num1); // 5
console.log(num2); // 10
- 引用类型:当对引用类型变量进行赋值操作时,实际上是复制了栈内存中的引用地址,两个变量指向堆内存中的同一个对象。修改其中一个变量对对象的属性,会影响另一个变量。
let obj1 = {name: 'Alice'};
let obj2 = obj1;
obj2.name = 'Bob';
console.log(obj1.name); // 'Bob'
console.log(obj2.name); // 'Bob'