gpt4 book ai didi

javascript - Javascript 究竟是如何传递参数的?

转载 作者:行者123 更新时间:2023-11-29 19:46:40 26 4
gpt4 key购买 nike

有一个小测试。我希望 obj\d 对象最终都更改了它们的 a 成员。但是 change1 样式不起作用,我想知道为什么,或者为什么不应该这样做?

<button id="btn1" onclick="test()">Change</button>
<script>
var obj1 = { a : {strblahblah: "blah"} };
var obj2 = { a : {strblahblah: "blah"} };
function test(){
change1(obj1.a);
change2(obj2);
alert("obj1: " + obj1.toSource() + "\r\nobj2: " + obj2.toSource());
}

function change1(obj){
obj = {str: "change1"};
}
function change2(obj){
obj.a = {str: "change2"};
}
</script>

结果(点击按钮后):

obj1: ({a:{strblahblah:"blah"}})
obj2: ({a:{str:"change2"}})

最佳答案

change1 中发生的事情是 obj 最初持有对 obj1.a 中对象的引用。但是,该行:

obj = {str: "change1"};

不改变 obj1.a。相反,它会创建一个新对象 ({str: "change1"}) 并更改 obj 以便它现在指向该对象而不是 obj1.a.

相比之下,change2obj 最初持有对 obj2 中对象的引用,并且有一行:

obj.a = {str: "change2"};

它访问引用对象(即 obj2)的内部结构,从而对该对象进行实际更改。

关于javascript - Javascript 究竟是如何传递参数的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19047504/

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