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