gpt4 book ai didi

Javascript 对引用定义的变量与值的混淆

转载 作者:搜寻专家 更新时间:2023-11-01 04:33:26 25 4
gpt4 key购买 nike

我了解 javascript 语言的以下属性:

var bar = 1;
var foo = bar;
bar = "something entirely different";
// foo is still 1

但是,当尝试将此逻辑应用于对象时,它的行为似乎有所不同:

var bar = {};
bar.prop = 1;
var foo = bar;
bar.prop = "something entirely different";
// foo.prop now changes to "something entirely different"
// but...
bar = "no longer an object";
// now foo remains an object with the prop property

谁能告诉我发生了什么以及为什么会有差异?

最佳答案

没错。当您将一个变量分配给一个对象时,您实际上是在创建对该对象的第二个引用。在第一种情况下,您所做的是分配 bar 以指向 foo 指向的字符串,但随后您更改 bar 指向您重新分配 bar 的时间。

在第二个示例中,您将 bar 分配给一个新对象,然后将 foo 指向同一对象,然后重新分配 bar到一个字符串。 foo 仍然指向同一个对象。

这样想:bar = "something"改变bar 指向的东西,而不是改变实际对象 {} 到一个字符串。

This article是对您所看到的内容的一个很好的解释。不过,我正在寻找更好/更权威的引用资料。

关于Javascript 对引用定义的变量与值的混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9473601/

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