除了 eval 或 document 之外,还有更好的方法从数组创建动态变量名吗?

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

我正在寻找一种在 js/ts 中创建包含环境名称列表的数组的方法。我想循环该数组并使用数组值作为闭包主体中的变量名称。

我想做一些类似的事情(我知道这行不通):

const envs = [ dev, test, uat, stage, prod ]

for (i = 1; i < envs.length; i++) {
    const envs[i] = `prefix${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 的原因是我们使用代码扫描器来标记 eval 的使用,并且我们必须不断解释误报。

javascript arrays typescript variables dynamic
1个回答
0
投票

您可以简单地使用一个对象来存储变量。比如:

const envs = ['dev', 'test', 'uat', 'stage', 'prod'];
const prefixes = {};

for (let i = 0; i < envs.length; i++) {
  prefixes[envs[i]] = `prefix${envs[i]}`;
}

console.log(prefixes);
// And simply do
console.log(prefixes.dev);

© www.soinside.com 2019 - 2024. All rights reserved.