可能重复:
Javascript 变量变量
请看下面的代码
var selected_id=1;
resetVar("selected");
function resetVar(foo){
foo+"_id"=0; // I want to set selected_id into 0
}
那可能吗?有什么建议吗?
可能重复:
Javascript 变量变量
请看下面的代码
var selected_id=1;
resetVar("selected");
function resetVar(foo){
foo+"_id"=0; // I want to set selected_id into 0
}
那可能吗?有什么建议吗?
如果您的变量是全局变量,那么它们是window
对象的隐式属性,您可以将它们作为window
对象的属性引用,如下所示:
function resetVar(foo){
window[foo + "_id"] = 0;
}
var selected_id = 1;
resetVar("selected");
如果您的变量不是全局变量,那么您将需要使它们成为某个已知对象的属性,以便您可以使用相同的技术。
一般来说,这通常是一个糟糕的编程想法,我们经常看到这个问题,哪里有更好的方法来处理这种情况。您没有透露整体情况,因此我们无法提供非常具体的建议,但您通常应该直接使用已知对象的属性,或者您应该使用数组来保存数组中的多个相关值,或者您应该只是直接引用变量。
如果 selected 是全局变量:
function resetVar(foo){
window[foo+"_id"] = 0;
}
您可以在拥有该方法的对象(在您的情况下为全局对象)上使用方括号表示法调用函数。window
window['selected_id'] = value
这是初学者经常提出的“解决方案”(这不是坏事,每个人都从某个地方开始)。答案是; 不要那样做,使用数组(或其他集合)。
使用变量名来确定程序逻辑是一个糟糕的想法,这将不可避免地导致混乱、无法维护的代码。更改变量的名称不应更改程序的逻辑。取而代之的是,将对象分组到一个集合中,如果需要,可以使用集合中的键,或者简单地使用索引。