Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript通过变量设置变量名_Javascript_Variables - Fatal编程技术网

Javascript通过变量设置变量名

Javascript通过变量设置变量名,javascript,variables,Javascript,Variables,可能重复: 请看下面的代码 var selected_id=1; resetVar("selected"); function resetVar(foo){ foo+"_id"=0; // I want to set selected_id into 0 }​​​​​ 可能吗?有什么建议吗?如果选择的是全局变量: function resetVar(foo){ window[foo+"_id"] = 0; }​​​​​ 这是初学者经常提出的解决方案,这不是一件坏事,每个人

可能重复:

请看下面的代码

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

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

可能吗?有什么建议吗?

如果选择的是全局变量:

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

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


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

您可以在拥有该方法的对象(全局窗口对象)上调用函数


window['selected_id']=value

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

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

var selected_id = 1;   
resetVar("selected");
如果您的变量不是全局变量,那么您需要使它们成为某个已知对象的属性,以便可以使用相同的技术


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

这样做是不可能的,但您可以通过这种方式创建对象的属性名称。当然,你也可以使用一个数组,这个数组自然是数字索引的。要求解决一个高层次的问题通常比要求我们解决你建议的解决方案的最后10%没有太多意义要好。