九,数据类型存储
1、简单类型与复杂类型
简单类型又叫做基本数据类型或者值类型,复杂类型又叫做引用类型
值类型:简单数据类型/基本数据类型,在存储时变量中存储的时值本身,因此叫做值类型
string、number、boolean、undefined、null
注意:简单数据类型 null 返回的是一个空的对象 object
如果有个变量我们以后打算存储为对象,暂时没想好放啥,就可以给null
引用类型:复杂数据类型,在存储时变量中存储的仅仅是地址(引用),因此叫做引用数据类型,通过new关键字创建的对象(系统对象、自定义对象),如Obect、Array、Date等
2、堆和栈
堆栈空间分配区别:
栈(操作系统):简单数据类型存放在栈里面,里面直接开辟一个空间存放的是值
堆(操作系统):存储复杂类型(对象),一般由程序员分配释放,若程序员不释放,由垃圾回收机制回收。
复杂数据类型存放在堆里面,它是先是在栈里面存放地址,十六进制表示,然后这个地址指向堆里面的数据
总结:
1、JS中的变量都是保存到栈内存里的
2、基本数据类型的值直接在栈内存中存储,值与值之间是独立存在的,修改一个变量不会影响其他的变量
3、引用数据类型的值直接保存到堆内存中的,每创建一个新的对象,就会在堆内存中开辟一个新的空间,而变量保存的是对象的内存地址(对象的引用),如果两个变量保存的是同一个对象引用,当一个通过一个变量修改属性时,另一个也会受到影响
4、比较两个基本属性类型的值时,就是比较值;
比较两个引用数据类型时,它是比较对象的内存地址,如果两个对象时一模一样的,但是地址不同,他也会返回false