从变量声明一个 nodejs 常量?



是否可以以编程方式从变量(字符串?(声明 nodejsconst

let myConsts = ["const1","const2","const3"];
myConsts.forEach(function(label){
defineConst(label,"value"); // I need this function
})

defineConst应该定义一个const,类似于PHP"define"函数,但对于nodejs

不,你不能在Javascript中做到这一点。 有一点,我想也许你可以用eval()破解它,这几乎总是解决编程问题的错误方法,但即使eval()也不会在当前范围内引入新的const变量。 它将向当前范围引入一个新的var变量,如下所示:

// dynamic variable name
let varName = "test";
// create variable in the current scope
eval("var " + varName + " = 4;");
// see if that variable exists and has the expected value
console.log(test);

但是,唉,你不能用const做到这一点. 你可以在这里阅读更多关于为什么:使用 eval(( 定义常量变量。

无论你试图解决什么编程问题,都可能以更好的方式解决,因为你真的不应该引入动态命名的局部变量。 最好使用诸如Map对象或具有动态命名属性的常规对象之类的东西,以便跟踪具有动态名称的值。

如果您分享了您尝试解决的实际编程问题(而不是您尝试的解决方案(,我们可以进一步建议该特定问题的最佳代码。


下面是在对象上存储动态命名属性的功能示例:

let base = {};
// dynamic property name (any string value in this variable)
let varName = "test";
// set property value with dynamic property name
base[varName] = "Hello";
// can reference it either way
console.log(base[varName]);
console.log(base.test);


或者,可以使用Map对象来完成:

let base = new Map();
// dynamic Map element key (any string value in this variable)
let varName = "test";
// set Map element with dynamic key
base.set(varName, "Hello");
// can reference it either way by the key
console.log(base.get(varName));
console.log(base.get("test"));

相关内容

最新更新