使用变量';s值作为javascript中的变量

使用变量';s值作为javascript中的变量,javascript,jquery,html,string,variables,Javascript,Jquery,Html,String,Variables,比如说,我有一个带值的变量 var myVarMAX = 5; 在HTML中,我有一个带有id=“myVar”的元素 我将id与字符串MAX相结合(创建一个字符串myVarMAX)。我的问题是如何使用此字符串访问同名变量?您可以使用eval,但如果您在窗口范围中有var,则更好 var myVarMAX = 5; var id="MAX"; // likely not in a var alert(window["myVar"+id]); // alerts 5 然而 一个更好的解决方案类

比如说,我有一个带值的变量

var myVarMAX = 5;
在HTML中,我有一个带有
id=“myVar”
的元素


我将
id
与字符串MAX相结合(创建一个字符串
myVarMAX
)。我的问题是如何使用此字符串访问同名变量?

您可以使用eval,但如果您在窗口范围中有var,则更好

var myVarMAX = 5;
var id="MAX"; // likely not in a var

alert(window["myVar"+id]); // alerts 5
然而

一个更好的解决方案类似于我发布的链接中的建议

var myVars = {
  "myVarMin":1,
  "myVarMax":5,
  "otherVarXX":"fred"
} // notice no comma after the last var
那你有


警报(myVars[“myVar”+id])

由于这篇文章经常被引用,我想添加一个用例

可能经常是PHP程序员尝试Javascript/Nodejs时遇到了这个问题

// my variables in PHP
$dogs  = [...]; //dog values
$cats  = [...]; //cat values
$sheep = [...]; //sheep values
假设我想将它们分别保存在各自的文件(dogs.json、cats.json、sheep.json)中,而不是同时保存,而不创建savedogs、savecats、savesheep等函数。一个示例命令是
save('dogs')

在PHP中,它的工作原理如下:

function save($animal) {
    if(!$animal) return false;
    file_put_contents($animal.'.json', json_encode($$animal));
    return true;
}
在Nodejs/Javascript中,可以这样做

// my variables in NodeJS/Javascript
let dogs  = [...]; //dog values
let cats  = [...]; //cat values
let sheep = [...]; //sheep values

function save(animal) {
    if (!animal) return false;

    let animalType = {};
    animalType.dogs  = dogs;
    animalType.cats  = cats;
    animalType.sheep = sheep;    

    fs.writeFile(animal + '.json', JSON.stringify(animalType[animal]), function (err){
       if (err) return false;
    });
    return true;

}

这是邪恶的,但你在寻找eval我不认为这是完全清楚的。您已经有了一个变量
myVarMAX
,然后您将
“myVar”
MAX
(那是什么?)组合起来再次形成
myVarMAX
?你为什么不使用数组?@Tomalak-他可能有很多变量,后缀与各种ID匹配。无论如何,一个关联数组当然是解决这个问题的好方法。我没想到eval是唯一的选择。我很高兴有一种不道德的方法可以做到这一点。除了污染全球范围也被认为是邪恶的,所以这是两种邪恶中较小的一种。我应该说‘不文明’:)或者只是“不那么邪恶”。正确的解决方案是正确地设计程序,这样就根本不必这样做。使用数组。