我通过以下示例在JavaScript中通过引用和原始数据类型进行传递。

//This is pass by value example

var firstPerson = "Manish";
var secondPerson = firstPerson;

firstPerson = "Vikash"; // value of firstPerson changed

console.log(secondPerson); // Manish
console.log(firstPerson); // Vikash



//This is the same as above example

var firstPerson = {name: "Manish"};
var secondPerson = firstPerson;

firstPerson.name = "Vikash";

console.log(secondPerson.name); // Vikash
console.log(firstPerson.name); // Vikash


在第一个示例中,我得到的是在secondPerson中复制firstPerson变量的值,以便它保存该值并打印出来。它不在乎将任何值重新分配给firstPerson变量。

但是第二个例子呢?

为什么即使我已将vikash复制到secondPerson中,仍通过执行secondPerson.name来打印firstPerson = {name: "Manish"}

最佳答案

仅当值是原始类型(如Number,Boolean等)时,Assignment才会复制该值。否则,赋值只会将引用复制到同一对象(对象,数组等)。没有分配新对象。

Reference


  分配不会创建对象的副本/克隆/副本。

关于javascript - JavaScript中的原始和引用数据类型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35029887/

10-11 13:03