gpt4 book ai didi

javascript - 如何在 JavaScript 中使用现有变量?

转载 作者:行者123 更新时间:2023-11-30 08:05:52 26 4
gpt4 key购买 nike

var list = [{name: 'foo'}, {name: 'bar'}];
var x = list[0];
x.name = 'baz'; // Changes name in list[0]
x = {name: 'baz'} // Doesn't change name in list[0] - PROBLEM

看起来第 4 行正在创建一个新变量。如何告诉 JavaScript 使用在第 2 行中创建的现有变量 x?

最佳答案

变量 x 包含对对象的引用。

  • x.name = ... 更改 x 引用的特定对象的属性。

  • x = { ... } 更改 x 引用的对象

这是设置:

x ==> { old object } <== list[0]

当您执行 x = { .. } 时,会发生以下情况:

x ==> { brand new object } 
{ old object } <== list[0]

但您希望它执行此操作(注意:这永远不会发生):

x ==> { brand new object } <== list[0]
{ old object } // referred to by no one! (will be garbage collected on the next sweep)

您似乎希望语句 x = { ... } 完全替换 x 以前用 a 引用的对象新对象。你不能; JavaScript 没有任何机制允许这种替换。对象不能像我的第二个例子那样“被替换”。您需要手动更改每个引用。

相反,如果您想更改 list 的第一个元素,则需要直接在数组上进行替换。即,您必须在更改 x 之后执行 list[0] = { ... }list[0] = x >.

关于javascript - 如何在 JavaScript 中使用现有变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18363557/

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