返回
博主亲身经历,告诉你赋值、浅拷贝和深拷贝那些事!
前端
2023-12-01 23:32:43
一篇没有主语的文章,浅拷贝,深拷贝都能搞清楚吗?#
相信老铁们在学习或者面试过程中,都会遇到赋值、浅拷贝和深拷贝。尤其是浅拷贝和深拷贝,我记忆比较深刻的遇到这个问题有两次:一次系统写出bug,就是因为对深浅拷贝理解不清楚;另一次是百度面试。
赋值
赋值是将一个值从一个变量复制到另一个变量。例如,以下代码将变量a的值复制到变量b:
let a = 10;
let b = a;
现在,变量a和变量b都等于10。如果我们改变变量a的值,变量b的值也会随之改变。例如,以下代码将变量a的值改为20:
a = 20;
现在,变量a和变量b都等于20。
浅拷贝
浅拷贝是将一个对象的引用复制到另一个对象。例如,以下代码将对象a的引用复制到对象b:
let a = { name: "John Doe", age: 30 };
let b = a;
现在,对象a和对象b都指向同一个对象。如果我们改变对象a的属性,对象b的属性也会随之改变。例如,以下代码将对象a的name属性改为"Jane Doe":
a.name = "Jane Doe";
现在,对象a和对象b的name属性都等于"Jane Doe"。
深拷贝
深拷贝是将一个对象的属性复制到另一个对象。例如,以下代码将对象a的属性复制到对象b:
let a = { name: "John Doe", age: 30 };
let b = {...a};
现在,对象a和对象b是两个独立的对象。如果我们改变对象a的属性,对象b的属性不会随之改变。例如,以下代码将对象a的name属性改为"Jane Doe":
a.name = "Jane Doe";
现在,对象a的name属性等于"Jane Doe",而对象b的name属性仍然等于"John Doe"。
总结
- 赋值是将一个值从一个变量复制到另一个变量。
- 浅拷贝是将一个对象的引用复制到另一个对象。
- 深拷贝是将一个对象的属性复制到另一个对象。
应用场景
- 浅拷贝通常用于传递对象引用。例如,如果我们有一个函数,它需要一个对象作为参数,我们可以使用浅拷贝来将对象传递给函数。
- 深拷贝通常用于创建对象的副本。例如,如果我们有一个对象,它包含敏感数据,我们可以在将其传递给另一个函数之前创建对象的深拷贝。
结语
我希望本文对赋值、浅拷贝和深拷贝的概念、特点、应用场景以及它们在计算机编程中的重要性进行了详细的解释,现在你应该对这些概念有一个更清晰的理解了。如果您有任何问题,请随时给我留言。