使用conlose.log()打印引用数据类型(对象)时遇到的现象

涉及知识点,基本数据类型和引用数据类型在赋值时的区别

一、定义名为obj的对象,把对象赋值给newObj,在更改obj对象内容之前打印newObj

let obj = {a:1,b:2}
let newObj = obj
console.log(newObj,'newObj')
 obj.c = 3

结果:被赋值的newObj跟着改变

二、设置setTimeout查看

let obj = {a:1,b:2}
let newObj = obj
console.log(newObj,'newObj')
setTimeout(function(){
    obj.c = 3
},2000)

结果:在设置的两秒内打开,无变化

结果:重新刷新,在设置的两秒后打开,newObj变化了

说明:console.log(d) 中打印的引⽤数据类型时,在引⽤数据发⽣改变后,其打印的值也会被实时修改

原因:引用数据类型直接赋值是浅拷贝,指向的是内存地址,当原来的值改变之后,拷贝来的值也会跟着变。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值