返回

博主亲身经历,告诉你赋值、浅拷贝和深拷贝那些事!

前端

一篇没有主语的文章,浅拷贝,深拷贝都能搞清楚吗?#

相信老铁们在学习或者面试过程中,都会遇到赋值、浅拷贝和深拷贝。尤其是浅拷贝和深拷贝,我记忆比较深刻的遇到这个问题有两次:一次系统写出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"。

总结

  • 赋值是将一个值从一个变量复制到另一个变量。
  • 浅拷贝是将一个对象的引用复制到另一个对象。
  • 深拷贝是将一个对象的属性复制到另一个对象。

应用场景

  • 浅拷贝通常用于传递对象引用。例如,如果我们有一个函数,它需要一个对象作为参数,我们可以使用浅拷贝来将对象传递给函数。
  • 深拷贝通常用于创建对象的副本。例如,如果我们有一个对象,它包含敏感数据,我们可以在将其传递给另一个函数之前创建对象的深拷贝。

结语

我希望本文对赋值、浅拷贝和深拷贝的概念、特点、应用场景以及它们在计算机编程中的重要性进行了详细的解释,现在你应该对这些概念有一个更清晰的理解了。如果您有任何问题,请随时给我留言。