【发布时间】:2018-03-26 11:06:13
【问题描述】:
我有以下代码:
var obj = {
car: "volvo",
speed: 20
};
var x = obj.speed;
obj.speed = 500;
console.log(x);
console.log(obj.speed);
obj.speed = 1000;
var y = obj.speed;
console.log(y);
当您将 x 记录到控制台时,可能会认为 x 为 500,但它仍然是 20。Console.log(obj.speed) 结果为 500。
你能告诉我为什么会这样吗?
我知道如果我交换它们的位置:var x 声明和 obj.speed = 500,它将指向 500。就像 y 变量一样
但是为什么呢?代码在记录 x 变量之前是否不检查它的最后一个值?
【问题讨论】:
-
你复制变量的值而不是引用
-
“人们会认为 x 会是 500” – 不,不会。您正在将值
20分配给一个变量,然后您正在更新一个不同的变量…… -
不,您已为
x分配了一个值,而不是引用类型 -
和
var x = 20;一模一样 -
参见例如codeburst.io/…
标签: javascript variables