拓展运算符是深拷贝还是浅拷贝
对于拓展运算符是深拷贝还是浅拷贝网上怎么说的都有,我就说一下我的理解。
什么是深拷贝?什么是浅拷贝?
假如B复制了A,修改A的时候,看B是否发生变化:
如果B也跟着变了,说明是浅拷贝,拿别人手段!
如果B没有改变,说明是深拷贝,自食其力!
怎么判断拓展运算符是什么拷贝呢?
看一下下面的例子:
let a = [1,2,3]; let b = [...a]; console.log(b);//[1,2,3] a[1] = 4; console.log(a);//[1,4,3] console.log(b);//[1,2,3]
结合浅拷贝和深拷贝的概念,那拓展运算符是不是深拷贝?别急看下面的例子:
let peoples = [{name:'zs',age:18,sex:"男"},{name:'ls',age:16,sex:"女"}]; let peoplesTwo = [...peoples]; peoples[0].age = 22; console.log(peoples);//[{name:'zs',age:22,sex:"男"},{name:'ls',age:16,sex:"女"}] console.log(peoplesTwo);//[{name:'zs',age:22,sex:"男"},{name:'ls',age:16,sex:"女"}]
结合浅拷贝和深拷贝的概念,那拓展运算符是不是浅拷贝?
所以结合上面两个例子得出一个结论,拓展运算符是深拷贝还是浅拷贝是看具体拷贝内容的,当拷贝的内容只有一层时是深拷贝,层数很多时时浅拷贝,如果还是不太理解可以先看深拷贝和浅拷贝的定义然后自己手敲一下代码,会有所帮助,谢谢。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」