Osc*_*rra 3 javascript arrays google-chrome
当我使用几个相关的数组时,我发现了一种异化效应.在打破我的心灵寻找错误后,我终于找到了解决方案.但我想知道你们中是否有人能解释我为什么会这样.
我的代码是这样的:
var closed =['closed', 'closed', ..., 'closed'];
sunday = closed;
...
saturday = closed;
Run Code Online (Sandbox Code Playgroud)
在此之后,如果我这样做:
sunday[2] = 'open';
Run Code Online (Sandbox Code Playgroud)
我得到星期天[2] ='打开',星期一[2] ='打开',星期二[2] ='打开',...,星期六[2] ='打开'.就像所有变量都被"胶合"或链接一样,因为没有你改变的物质,所有变量都以同样的方式变化.
我用这种方式修复了它:
var closed1 =['closed', 'closed', ..., 'closed'];
...
var closed7 =['closed', 'closed', ..., 'closed'];
sunday = closed1;
...
saturday = closed7;
Run Code Online (Sandbox Code Playgroud)
现在我得到了自变量.但我不喜欢这个解决方案,所以如果有人知道这个问题,我将不胜感激.我在Google Chrome上运行JavaScript.
谢谢
数组是对象,对象是引用类型.
每个变量都sunday, monday, tuesday, etc...保存对同一个Array的引用,因此每个变量都能够观察到该Array的更改.
看看你的代码,我有一种直觉,也许你应该使用Object而不是Array.
var closed = {
sunday: 'closed',
monday: 'open',
tuesday: 'open',
wednesday: 'open',
thursday: 'open',
friday: 'open',
saturday: 'closed'
};
Run Code Online (Sandbox Code Playgroud)
只是预感.以为我会把它扔出去.
| 归档时间: |
|
| 查看次数: |
63 次 |
| 最近记录: |