关于js展开运算符的问题

大家好久不见,甚是想念
今天你敲代码了吗!?今天我们来讨论一下js展开运算符的问题
先上代码 让我们来看一下

let d ={
  a:2
  b:{
     x:[4,5,6],
     y:[1,2,3]
    }
}
e=d 
d.a =4
console.log(e)

这个时候我们都知道 d和e都被更改了 这个叫浅拷贝
因此我们可以使用深拷贝来解决这个问题

let d ={
  b:{
     x:[4,5,6],
     y:[1,2,3] 
    }
}
e = [...d]
console.log(e)

而这个时候你觉得问题解决了吗
在这里插入图片描述
然后我搜了搜资料
展开运算符 是不能展开对象的 只能展开数组
那该如何解决这个问题呢
不多啰嗦 让我们来看一下

let d ={
   b:{
     x:[4,5,6],
     y:[1,2,3]
     }
}
e={...d}
console.log(e)

这个时候我们实现了深拷贝
你随便修改d吧 e的值也不会跟你修改
而这个时候我们又来了一个问题
如何让x、y 合并在一起呢

let d ={
   b:{
     x:[4,5,6],
     y:[1,2,3]
     }
}
e=[...d.b.x,...d.b.y]
console.log(e)

先上结果,我们是可以获取到的
在这里插入图片描述
但是这个时候有点疑问了,不是说数组里面不能用展开运算符 不是说 […d] 不能展开对象吗
经过一同分析
让我来给出解释,这是因为优先级,其实还是展开的是数组 …(d.b.x) 而不是(…d).b.x
希望对你有所帮助

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值