JavaScript——基本数据类型与引用数据类型(内存分析)

导图:

js中内存分类为两种——栈和堆

  • 栈:变量存在栈内存中
  • 堆:对象存放在堆内存中

基本类型传值


结论:基本数据类型的值存在栈,值与值之间独立存在,修改一个值不会影响其他变量

举个例子:把a的值传给b

下面解释为什么当a的值变为124时,b为什么不改变

可以看出a和b的值相互独立,当代码执行到a++时,只是a的值变为124,而b也是123


引用类型传值


结论

  • 对象保存在堆内存中
  • 每创建一个新的对象就会在堆内存开辟一个新的空间
  • 变量保存的是内存地址(对象引用)
  • 两个变量保存同一个引用,一个变量修改属性时,另一个变量属性值也会变化

举例说明:

当obj属性name变为"孙悟空"时,obj1属性name也变为"孙悟空"

内存分析——解释上述现象

当栈存放引用类型时,值为对象的地址,obj与obj1指向同一个地址,所以当obj的name值变为“孙悟空”时,obj1也会发生变化

发布了156 篇原创文章 · 获赞 49 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/shang_0122/article/details/103700208
今日推荐