一:栈堆空间分配区别:
1 栈:由操作系统自动分配释放存放函数的参数值、局部变量的值等。其操作方式类似于数据结构中的栈;
简单数据类型存放在栈中
2 堆:存储复杂数据类型(对象),一般由程序员分配释放,若程序员不释放,由垃圾回收机制回收
引用数据类型存放到堆里面
二:数据类型分类:
JS中数据类型分为
1 简单数据类型(值类型)
指存储时变量中存储的是值本身;
2 复杂数据类型(引用数据类型)
变量存储时,存放的是地址,其数据是存放在堆中
二:图例解释:
1 简单数据类型
简单数据类型复制的值,而非地址
案例1:
案例2:
let num1 = 1
let num2 = num1
let num2 = 2
console.log(num1)//1
2 复杂数据类型
复杂数据类型复制的是存储地址
let obj1 = {
name:'雷军'
}
let obj2 = obj1
obj2.name = '马化腾'
console.log(obj1.name)//马化腾
console.log(obj2.name)//马化腾