我正在寻找一种在 JavaScript/TypeScript 中创建一个包含环境名称列表的方法。我希望遍历这个数组,并在闭包体中将数组值作为变量名来使用。
我知道下面的代码无法正常工作,但我想实现类似这样的效果:
const envs = [ 'dev', 'test', 'uat', 'stage', 'prod' ];
for (let i = 0; i < envs.length; i++) {
const `prefix${envs[i]}` = envs[i];
}
我已经了解到可以使用 eval
来动态创建变量,如下所示:
let k = 'value';
let i = 0;
for (i = 1; i < 5; i++) {
eval('var ' + k + i + '= ' + i + ';');
}
这将会输出:
console.log("value1=" + value1); // 输出:value1=1
console.log("value2=" + value2); // 输出:value2=2
console.log("value3=" + value3); // 输出:value3=3
console.log("value4=" + value4); // 输出:value4=4
不过,我想知道是否有不使用 eval
的替代方案?之所以不想使用 eval
是因为我们使用的代码扫描器会标记其使用,并且我们需要不断解释这些误报。
编辑
为了进一步说明:我试图创建一个变量以便稍后在代码中引用它。因此,虽然上面的 console.log
示例显示了值,对我来说更重要的是能够后续通过变量名引用它。例如:newThing(envs[i] + i, other, params)
。
同时,我尽量避免使用诸如 window
和 document
这样的全局对象,因为它们在不同的执行环境中可能有所不同。