MST
星途 面试题库

面试题:JavaScript中原始类型与引用类型在赋值时的区别

请阐述JavaScript中原始类型和引用类型在进行变量赋值操作时,内存层面和赋值结果上分别有什么不同,并举例说明。
47.5万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试

内存层面

  • 原始类型:原始类型(如stringnumberbooleannullundefinedsymbol)在内存中占据固定大小的空间,它们的值直接存储在栈内存中。
  • 引用类型:引用类型(如ObjectArrayFunction)的值存储在堆内存中,而在栈内存中存储的是指向堆内存中实际数据的引用地址。

赋值结果

  • 原始类型:当对原始类型变量进行赋值操作时,会在栈内存中创建一个新的值,与原变量相互独立。修改其中一个变量的值,不会影响另一个变量。
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'