JavaScript——基本数据类型与引用数据类型(内存分析)
导图:
js中内存分类为两种——栈和堆
- 栈:变量存在栈内存中
- 堆:对象存放在堆内存中
基本类型传值
结论:基本数据类型的值存在栈,值与值之间独立存在,修改一个值不会影响其他变量
举个例子:把a的值传给b
下面解释为什么当a的值变为124时,b为什么不改变
可以看出a和b的值相互独立,当代码执行到a++时,只是a的值变为124,而b也是123
引用类型传值
结论
- 对象保存在堆内存中
- 每创建一个新的对象就会在堆内存开辟一个新的空间
- 变量保存的是内存地址(对象引用)
- 两个变量保存同一个引用,一个变量修改属性时,另一个变量属性值也会变化
举例说明:
当obj属性name变为"孙悟空"时,obj1属性name也变为"孙悟空"
内存分析——解释上述现象
当栈存放引用类型时,值为对象的地址,obj与obj1指向同一个地址,所以当obj的name值变为“孙悟空”时,obj1也会发生变化