变量可以存储到数组中。
var x = 4,
y = 8,
z = 15,
var someArray = [x, y, z];
如何通过数组引用变量来更改变量的值?
如果我执行以下操作,我会得到不良结果。
//change value of y to 80.
someArray[1] = 80;
代码不会将y的值更改为80,而是使用整数80替换数组中的第二项。我的数组现在为[x,80,z]
我知道我可以明确地更改y的值并更新数组......
y = 80;
someArray = [x, y, z];
someArray[1]; //80
但是在我没有明确知道该数组位置的特定变量名称的情况下,我想使用该数组来改变它的值。我该怎么做呢?我的数组概念可能是错误的。我是否将对象与数组混淆了? 感谢您给我的任何帮助和纠正。
答案 0 :(得分:4)
var x = {val: 1},
y = { val: 2 },
z = { val: 3 },
ary = [ x, y, z ];
// console.log(ary[0]) will put { val: 1 }
x.val = 4;
// console.log(ary[0]) will put { val: 4 }
这是因为原始值(数字/字符串)按值传递。使用后,不会引用变量的值。但是,对象通过引用传递,因此保持了连接。另请参阅我在此问题上看到的最佳文章:http://snook.ca/archives/javascript/javascript_pass
答案 1 :(得分:1)
简短的回答是数组不存储变量,而是存储变量的值,但如果要模拟这个,可以使用多维数组或对象,如下所示:
var x = 4,y = 8,z = 15;
var someArray = {'x':x, 'y':y, 'z':z};
然后,您可以通过点表示法或括号表示法访问这些值,例如获取x的值:
alert(someArray.x);