论栈与堆值传递与引用类型传递的关系

小白理解 大佬勿喷!

堆栈:

: 一般用来存放简单数据类型以及一些局部变量(函数内声明的变量),函数的返回地址和参数(栈里面存放的地址真正的对象实在堆空间内); 栈内部多个值相等的变量是可以指向一个地址的;栈的优势是存放数据比堆要块; 栈使用的是一级缓存, 他们通常都是被调用时处于存储空间中,调用完毕立即释放。

:用来储存复杂数据类型(对象,函数) 在JavaScript中一般由程序员设置,若程序员不释放,由垃圾回收机制回收。堆调用对象的速度较慢。

简单数据类型传值:

当我们把一个存放简单数据类型的变量的值,传递给另外一个变量的时候,实际上是相当于把变量在栈空间内部的值赋值了一份给了第二个变量,当第二个变量发生改变时,是不会影响第一个变量的!

例如:

复杂数据类型传值:

当我们把引用数据类型传递个第二个变量时,相当于是把存第一个变量存放在栈里面存放的堆地址复制给了第二个变量,这两个变量存放的是一个堆地址,修改两个不同的变量其实修改的是同一个对象,所以当改变第二个变量时,第一个对象打印出来的值也会随之改变!

 例如:

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值