gpt4 book ai didi

JavaScript 对象更新行为(奇怪?)

转载 作者:行者123 更新时间:2023-11-28 11:11:31 28 4
gpt4 key购买 nike

我正在学习 JavaScript。尝试理解代码,

function foo (){
var a = b = {name: 'Hai'};
document.write(a.name +'<br>');
document.write(b.name +'<br>');

a.name = 'Hello';

document.write(a.name +'<br>');
document.write(b.name +'<br>');
}

输出如下,



你好
你好

虽然分配确实是从右到左,但更新会影响两个方向。是这样的吗?有人可以解释一下吗?

最佳答案

这是因为 ab 都引用同一个对象 {name: 'Hai'}。当您更改其中一个变量时,更改将反射(reflect)在两个变量中。

var a = b = {name: 'Hai'};

上述陈述本质上与此类似(除了 @NinaScholz 在她的回答中指出的内容):

var b = {name: 'Hai'};
a = b;

这样,ab 都指向内存中的同一个对象,因此一个对象的更新会自动反射(reflect)到另一个对象。

在文档 here 中了解有关对象如何工作的更多信息。要了解有关对象和引用的更多信息,请参阅 this link .

关于JavaScript 对象更新行为(奇怪?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49791595/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com