我正在学习javascript。我对以下示例如何工作感到困惑?我创建了一个对象person
,我将其值分配给Person2.
var person = "hello";
var Person2 = person;
person = "hey";
console.log(Person2); // prints hello
console.log(person); //prints hey
为什么Person2
的值没有变化,即使已为person
分配了新值。这是因为我传递的是引用。我不清楚其实施情况。我错过了什么概念?
答案 0 :(得分:2)
您正在处理JavaScript中的primitive
- 字符串是基元(因此是布尔值,数字,未定义和null)。基元由值分配,而不是通过引用分配。
通过引用分配数组和对象。
var person = ['test'];
var person2 = person;
person[0] = 'hi';
console.log(person); //['hi'];
console.log(person2); //['hi'];
答案 1 :(得分:1)
让我们逐步了解代码中发生的事情......
1: var person = "hello";
2: var Person2 = person;
3: person = "hey";
4: console.log(Person2);
5: console.log(person);
答案 2 :(得分:0)
这是因为你不传递引用(至少不是指向person
的
您尚未更改Person2
的值,因此值仍为"hello"
,这是您为其分配的唯一值。
答案 3 :(得分:0)
您将person2的值设置为person的值,然后您将更改person的值。 person2的值不会改变。
答案 4 :(得分:0)
字符串和数字(基元)不是通过引用传递的,这只是对象或数组的情况(数组是严格的对象)。因此,将其分配给新变量会复制字符串。
要通过引用传递它,您将使用类似
的内容var person = {message: "hello"};
var Person2 = person;
person.message = "Hey";
person === Person2 // true