Javascript 为什么变量不会在Java脚本中自动更新?(范围?)
我有以下代码:Javascript 为什么变量不会在Java脚本中自动更新?(范围?),javascript,variables,Javascript,Variables,我有以下代码: 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记录到console时,人们会认为x是500,但它仍然是20。Console.log(对象速度)结果为500 你能告诉
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记录到console时,人们会认为x是500,但它仍然是20。Console.log(对象速度)结果为500
你能告诉我为什么会这样吗
我知道如果我交换它们的位置:var x声明和obj.speed=500,它将指向500。就像y变量一样
但是为什么呢?在记录x变量之前,代码没有检查它的最后一个值吗?当您将
x
分配给obj.speed
时,它与将值分配给原始变量类似
如果将obj
的值赋给变量y
,则该变量将被更新,因为它将引用相同的内存位置
var obj={
汽车:“沃尔沃”,
速度:20
};
//对象是引用数据类型。
//但是你在计算obj.speed的值,这是x的基本值
//因此,即使更改obj.speed的值,x的值也不会更改。
var x=目标速度;
目标速度=500;
控制台日志(x);
//但如果将object的值赋给另一个变量'y`
//现在,y将指向与obj相同的内存位置
//如果更新obj,则y的值也将更新
var y=obj;
目标速度=1000;
控制台日志(y);
控制台日志(obj)代码>您复制变量的值,而不是引用“一个人期望x为500”-不,一个人不会。您将值20
分配给一个变量,然后您将更新一个不同的变量…不,您将值分配给了x
而不是一个参考类型,这与var x=20完全相同代码>参见示例。