在以下两个片段中:
var person = "Kobe";
var anotherPerson = person; // anotherPerson = the value of person
person = "Bryant"; // value of person changed
console.log(anotherPerson); // Kobe
console.log(person); // Bryant
如果我们使用Object:
var person = {name: "Kobe"};
var anotherPerson = person;
person.name = "Bryant";
console.log(anotherPerson.name); // Bryant
console.log(person.name); // Bryant
第一个记录变量anotherPerson
的“Kobe”,但如果anotherPerson引用了变量人,那么任何发生的变化都应该反映另一个人的权利吗?
任何人都可以详细解释这个
谢谢
答案 0 :(得分:1)
在第一个示例中,您有两个引用"Kobe"
的变量。虽然通过将"Bryant"
分配给person变量,但您正在更改该变量的引用。所以最后你得到2个变量,每个变量引用另一个字符串。由于JS中的原始类型是不可变的,因此无法“更改字符串的值”。您只能指定一个新字符串。
在你的第二个例子中,你只是改变了你引用的对象的属性,尽管引用当然保持不变。
答案 1 :(得分:1)
variable
可以包含两种类型的值之一:原始值和参考值。
Primitive values
是存储在堆栈中的数据。Primitive value
直接存储在变量访问的位置。Reference values
是存储在堆中的对象。Reference value
是指向存储对象的内存中的位置的指针。Primitive types
包括Undefined,Null,Boolean,Number或String。基础知识
对象是属性的聚合。属性可以引用对象或基元。基元是值,它们没有属性。
答案 2 :(得分:1)
如需更多见解,请参阅: