gpt4 book ai didi

javascript - 通过引用传递 JavaScript 对象

转载 作者:行者123 更新时间:2023-12-03 02:33:27 25 4
gpt4 key购买 nike

Please read the comments in the code below to know what I am trying to ask.

预期输出:根据 JavaScript 中的引用传递机制,objOne 预计在最后记录 {},因为objTwo 已使用 {} 初始化。

var objOne = {
x: 1,
y: 2
};

var objTwo = objOne;

// change the x vlaue to 2 by objTwo
objTwo.x = 2;

// Change the value of key x in objOne as well - pass by reference mechanism
console.log(objOne); // { x: 2, y: 2 }

/*** Pass by reference is understood in code, above this comment ***/

// Now what if objTwo initialized with empty object
objTwo = {};

console.log(objOne); // { x: 2, y: 2 } but expected output = {}

// As per pass by reference mechanism. objOne is expected to log {}, because objTwo was initialized with {}.

最佳答案

当您将一个变量分配给另一个变量时,这两个变量现在并不是通过引用链接的;而是您误解了“通过​​引用传递”的含义。

保存对象的变量并不“直接”保存对象。它保存的是对对象的引用。当您将该引用从一个变量分配给另一个变量时,您正在制作该引用的副本。现在这两个变量都保存了对对象的引用。通过该引用修改对象会更改持有该对象引用的两个变量。

当您为其中一个变量分配新值时,您只是修改了该变量所保存的值。该变量现在不再保存对该对象的引用,而是保存其他内容。另一个变量仍然保留对原始对象的引用,赋值根本不影响它。

关于javascript - 通过引用传递 JavaScript 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37290747/

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