简单类型又叫做基本数据类型或者值类型 复杂类型又叫做引用类型
值类型:简单数据类型或者基本数据类型 在存储时变量中存储的是值本身 因此叫做值类型
string number boolean undefined null
但是如果你使用 typeof(null) 你会发现返回的是一个空的对象Object
如果有个变量我们想要存储为对象 但是暂时没想好做什么 这个时候我们可以用null
引用类型:复杂数据类型 在存储时变量中存储的仅仅是地址(引用) 因此叫做引用数据类型
通过new 关键字创建的对象(系统对象 自定义对象) 如 Object Array Date等
堆栈空间分配区别
1.栈(操作系统) 由操作系统自动分配释放 存放函数的参数值 局部变量的值等 其操作方式类似于数据结构中的栈
简单数据类型存放到栈里面
2.堆(操作系统) 存放复杂的数据类型(对象) 一般由程序员分配释放 若程序员不释放 由垃圾回收机制回收
复杂数据类型存放到堆里面
但是JS中没有堆栈的概念
简单数据类型 是存放在栈里面 里面直接开辟一个空间存放的值。
复杂数据类型 首先在栈里面存放地址(16进制表示) 这个地址指向堆里面的数据。
函数的形参也可以看作是一个变量 当我们把一个值类型作为参数传递给函数的形参时 其实是把变量在栈中的值复制
一份给形参 那么在方法内部对形参做任何修改 都不会影响到外部变量
当我们把一个复杂类型给传参时 其实是把栈中存放的指向值的地址复制给了形参 形参和实参其实指向的是堆里的同一个值
所以操作的是同一个对象。
原文:https://www.cnblogs.com/huanying2000/p/12452263.html