英文:
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
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论