gpt4 book ai didi

javascript - 初始化时数组 'glued'

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:57:24 27 4
gpt4 key购买 nike

我在使用几个相关数组时发现了一种奇怪的效果。在寻找错误之后,我终于找到了解决方案。但我想知道你们中是否有人可以向我解释为什么会发生这种情况。

我的代码是这样的:

var closed =['closed', 'closed', ..., 'closed'];
sunday = closed;
...
saturday = closed;

如果我这样做之后:

sunday[2] = 'open';

我得到周日[2] = '开放',周一[2] = '开放',周二[2] = '开放',...,周六[2] = '开放'。就像所有变量都被“粘合”或链接在一起一样,因为无论您更改哪个,它们都会以相同的方式更改。

我是这样修复的:

var closed1 =['closed', 'closed', ..., 'closed'];
...
var closed7 =['closed', 'closed', ..., 'closed'];
sunday = closed1;
...
saturday = closed7;

现在我得到了自变量。但我不喜欢这种解决方案,所以如果有人知道这个问题,我将不胜感激。我在 Google Chrome 上运行 JavaScript。

谢谢

最佳答案

数组是对象,对象是引用类型。

每个变量 sunday、monday、tuesday 等... 都持有对同一个数组的引用,因此每个变量都能够观察到该数组的变化。


看着你的代码,我有一种直觉,也许你应该使用对象而不是数组。

var closed = {
sunday: 'closed',
monday: 'open',
tuesday: 'open',
wednesday: 'open',
thursday: 'open',
friday: 'open',
saturday: 'closed'
};

虽然只是预感。我想我会把它扔出去。

关于javascript - 初始化时数组 'glued',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13142358/

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