我有一些关于在JavaScript中将变量设置为与另一个变量相等的问题。
假设我们创建一个对象,a然后设置b = a。
var a = {
fname: "Jon",
lname: "Smith",
age: 50
}
var b = a;
Run Code Online (Sandbox Code Playgroud)
我了解,如果更改,a的属性之一b也会更改,因为设置时b = a我们不会克隆a数据,而是创建对a数据的引用。例如,如果我们设置a.fname = "Sarah"的新值b.fname会"Sarah"。
如果a通过设置尝试“清除” a = {},则对象b将保持不变。我不明白为什么以这种方式操作对象会产生与第一个示例不同的结果。
我对以下情况也有疑问。
var x = 10;
var z = x;
Run Code Online (Sandbox Code Playgroud)
如果然后设置x = 20,则值z保持不变。根据我第一个问题中描述的行为,人们会认为的新值z将反映的新值x。有人可以解释一下我在这里缺少什么吗?
谢谢!