Javascript按变量设置变量名称

时间:2012-04-25 20:54:25

标签: javascript variables

  

可能重复:
  Javascript Variable Variables

请查看以下代码

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

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

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

4 个答案:

答案 0 :(得分:8)

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

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

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

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

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

答案 1 :(得分:3)

如果选择是全局变量:

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

答案 2 :(得分:2)

您可以在拥有该方法的对象(在您的情况下是全局的window对象)上使用square bracket notation调用函数。

window['selected_id'] = value

答案 3 :(得分:1)

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

使用变量名来确定程序逻辑是一个可怕的想法,这将不可避免地导致混乱,不可维护的代码。更改varibale的名称不应该改变程序的逻辑。相反,将obbjects分组到一个集合中,如果需要,可以使用密钥到集合中,或者只是索引。