1.简单数据类型:
Null,undefined, Boolean, String, Symbol, Number
复杂数据类型:
Object
注意: 其中的简单数据类型 null 返回的是一个空的对象 object
用途: 如果有个变量我们打算存储为对象, 这个时候就给null
2. 堆和栈的空间分配:
1.栈(操作系统):由操作系统自动分配释放函数的参数值,局部变量的值等. 这种操作雷素与数据结构中, 简单数据类型放到栈中
2.堆(操作系统): 存储复杂类型(对象), 一般由程序员分配释放, 若程序员不释放, 由垃圾回收机制回收. 复杂数据类型存放到堆里面
注意注意: JS中是没有栈和堆的概念的
进一步理解:
简单数据类型存放到栈里面,里面直接开辟一个空间 存放的是值
复杂数据类型 首先在栈里面存放地址 十六进制表示 然后这个地址指向堆里面的数据
3.引用类型(复杂数据类型): 通过new关键字创建的对象(系统对象, 自定义对象), 如Object, Array, Date等等
引用类型变量(栈空间) 里面存放的是地址, 真正的对象实例存放在堆空间中
4. 复杂类型传参:
函数的形参可以看作是一个变量, 当我们把引用类型变量传给形参时, 其实是把变量在栈空间里保存的堆地址复制给形参, 形参和实参其实保存的是同一个堆地址, 所以操作的是同一个对象