如何通过变量名的字符串形式获取对应变量的实际值?
如何通过字符串形式的变量名访问对应变量值
你的代码里result只是拼接出的变量名字符串,并没有直接关联到实际变量。以下是几种可行的解决方法:
推荐方案:用对象存储变量(最佳实践)
把需要访问的变量统一放到一个对象中,通过对象属性访问器来获取对应值,这是最安全、可维护的方式:
const varStore = { test1: 6, test2: 4 }; function findVar(index) { let result = "test" + index; console.log(varStore[result]); // 输出6、4 } findVar(1); findVar(2);
全局作用域下的变量(局限场景)
如果你的变量是在全局作用域用var声明(注意let/const声明的全局变量不会挂载到全局对象上),可以通过全局对象访问:
- 浏览器环境用
window:
var test1 = 6; // 用var声明全局变量 var test2 = 4; function findVar(index) { let result = "test" + index; console.log(window[result]); // 输出6、4 } findVar(1); findVar(2);
- Node.js环境用
globalThis:
var test1 = 6; var test2 = 4; function findVar(index) { let result = "test" + index; console.log(globalThis[result]); } findVar(1); findVar(2);
不推荐:使用eval
虽然eval可以直接执行字符串代码来获取变量值,但存在严重的安全风险(如果index是不可信的用户输入,会执行恶意代码),同时也不利于代码维护,除非万不得已不要用:
let test1 = 6; let test2 = 4; function findVar(index) { let result = "test" + index; console.log(eval(result)); // 输出6、4 } findVar(1); findVar(2);
内容的提问来源于stack exchange,提问作者coolidenticon
相关产品推荐
相关产品推荐

