我通过以下示例在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/