我想声明一个变量,其名称是另一个变量的内容。这是可能的吗?
我试过这样做。
var "x" + "y" = 1;
声明这个:
var xy = 1;
但这抛出一个错误。Uncaught SyntaxError.Unexpected string: 非预期的字符串
唯一的方法(AFAIK)是用动态名称来创建局部变量。eval()
. 这不是一个很好的解决方案,因为考虑到性能问题。你也可以使用全局对象创建具有动态名称的全局变量。
eval(`var ${varName} = 123;`);
globalThis[varName] = 123;
然而,创建具有动态名称的变量并不是一个常见的做法。最有可能的是,你需要的是一个 Map
.
const varName = "varName", otherVarName = "otherVarName";
const map = new Map();
map.set(varName, 123);
map.set(otherVarName, 456);
console.log(map.get(varName), map.get(otherVarName));
在JavaScript中,你可以通过某种方式使用eval函数或window对象创建动态变量。
eval('var xy="evalTest";');
alert(xy);
window["xy"] = "windowTest";
alert(window["xy"]);
另一个可能的解决方案是创建一个包含所有全局变量的json。
//create an empty json (at the top of your javascript file)
const globalVariables = {};
//add variable and value to your json
globalVariables["x"+"y"] = 1;
//access value from json
console.log(globalVariables["xy"]); // this function will log 1 to the console