如何替代eval函数?

huangapple go评论61阅读模式
英文:

How to replace the eval function?

问题

如何替代 eval() 请参考以下代码:

const v1 = 'bin';
const nvmProfix = 'NVM_';

console.log(process.env.NVM_BIN);
// 打印结果为 NVM_BIN=/Users/someone/.nvm/versions/node/v16.16.0/bin

const nvmBinVar = `process.env.NVM_${v1.toUpperCase()}`;
console.log(nvmBinVar);
// 打印结果为 process.env.NVM_BIN

const nvmBin = process.env[nvmBinVar];
console.log(nvmBin);
// 打印结果为 /Users/someone/.nvm/versions/node/v16.16.0/bin

请注意,我们可以使用方括号 [] 访问 JavaScript 对象的属性,因此可以通过 process.env[nvmBinVar] 来获取环境变量的值,而无需使用 eval() 函数。

英文:

This is my code

const v1 = 'bin';
const nvmProfix = 'NVM_';

console.log(process.env.NVM_BIN);
//it prints NVM_BIN=/Users/someone/.nvm/versions/node/v16.16.0/bin

const nvmBinVar = `process.env.NVM_${v1.toUpperCase()}`;
console.log(nvmBinVar);
//it prints process.env.NVM_BIN

const nvmBin = `${eval(nvmBinVar)}`;
console.log(process.env.NVM_BIN);
//it prints NVM_BIN=/Users/someone/.nvm/versions/node/v16.16.0/bin

How to replace the eval() pls ?

答案1

得分: 1

你难道不可以使用括号表示法吗?

const
  nvmProfix = 'NVM_',
  v1 = 'bin',
  nvmBin = `${nvmProfix}${v1.toUpperCase()}`;

// 打印 NVM_BIN=~/.nvm/versions/node/v16.16.0/bin
console.log(process.env.NVM_BIN); // 静态访问

// 打印 NVM_BIN=~/.nvm/versions/node/v16.16.0/bin
console.log(process.env[nvmBin]); // 动态访问
英文:

Couldn't you just use bracket notation?

const
  nvmProfix = 'NVM_',
  v1 = 'bin',
  nvmBin = `${nvmProfix}${v1.toUpperCase()}`;

// Prints NVM_BIN=~/.nvm/versions/node/v16.16.0/bin
console.log(process.env.NVM_BIN); // Static access

// Prints NVM_BIN=~/.nvm/versions/node/v16.16.0/bin
console.log(process.env[nvmBin]); // Dynamic access

huangapple
  • 本文由 发表于 2023年6月15日 03:39:10
  • 转载请务必保留本文链接:https://go.coder-hub.com/76477023.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定