如何在js中声明一个名称为自定义的变量?

问题描述 投票:0回答:1

我想声明一个变量,其名称是另一个变量的内容。这是可能的吗?

我试过这样做。

var "x" + "y" = 1;

声明这个:

var xy = 1;

但这抛出一个错误。Uncaught SyntaxError.Unexpected string: 非预期的字符串

javascript variables
1个回答
2
投票

唯一的方法(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));

1
投票

在JavaScript中,你可以通过某种方式使用eval函数或window对象创建动态变量。

eval('var xy="evalTest";');
alert(xy);
window["xy"] = "windowTest";
alert(window["xy"]);

1
投票

另一个可能的解决方案是创建一个包含所有全局变量的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
© www.soinside.com 2019 - 2024. All rights reserved.