0

可能重复:
Javascript 变量变量

请看下面的代码

var selected_id=1;   
resetVar("selected");

function resetVar(foo){
 foo+"_id"=0; // I want to set selected_id into 0
}​​​​​

那可能吗?有什么建议吗?

4

4 回答 4

8

如果您的变量是全局变量,那么它们是window对象的隐式属性,您可以将它们作为window对象的属性引用,如下所示:

function resetVar(foo){
    window[foo + "_id"] = 0; 
}​​​​​

var selected_id = 1;   
resetVar("selected");

如果您的变量不是全局变量,那么您将需要使它们成为某个已知对象的属性,以便您可以使用相同的技术。

一般来说,这通常是一个糟糕的编程想法,我们经常看到这个问题,哪里有更好的方法来处理这种情况。您没有透露整体情况,因此我们无法提供非常具体的建议,但您通常应该直接使用已知对象的属性,或者您应该使用数组来保存数组中的多个相关值,或者您应该只是直接引用变量。

于 2012-04-25T20:56:57.597 回答
3

如果 selected 是全局变量:

function resetVar(foo){
    window[foo+"_id"] = 0;
}​​​​​
于 2012-04-25T20:56:14.610 回答
2

您可以在拥有该方法的对象(在您的情况下为全局对象)上使用方括号表示法调用函数。window

window['selected_id'] = value

于 2012-04-25T20:56:51.117 回答
1

这是初学者经常提出的“解决方案”(这不是坏事,每个人都从某个地方开始)。答案是; 不要那样做,使用数组(或其他集合)。

使用变量名来确定程序逻辑是一个糟糕的想法,这将不可避免地导致混乱、无法维护的代码。更改变量的名称不应更改程序的逻辑。取而代之的是,将对象分组到一个集合中,如果需要,可以使用集合中的键,或者简单地使用索引。

于 2012-04-25T20:56:18.053 回答