You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在JavaScript中使用const和let实现以字符串作为变量名?

核心结论:没法用window['变量名']访问const/let的全局变量

ES6里const和let声明的全局变量不会挂载到window对象上,这是规范刻意设计的,就是为了减少全局作用域的污染问题,所以直接照搬var那套通过window访问的方式行不通。

实用替代方案:用容器模拟动态变量访问

如果需要实现"通过字符串找对应变量"的需求,最靠谱的方式是自己维护一个容器,比如普通对象或者Map:

1. 普通对象(最常用)

// 把需要动态访问的变量统一放到一个对象里
const myVars = {
  ibrahim: 100,
  alice: 200
}

// 直接用字符串键访问
console.log(myVars['ibrahim']) // 输出:100

// 也可以用变量存字符串再访问
const targetName = 'alice'
console.log(myVars[targetName]) // 输出:200

2. Map(键类型更灵活)

如果你的"变量名"不是字符串(比如数字、对象),用Map更合适:

const varsMap = new Map()
varsMap.set('ibrahim', 100)
varsMap.set(123, '数字键')

console.log(varsMap.get('ibrahim')) // 输出:100
console.log(varsMap.get(123)) // 输出:数字键

额外提醒:关于函数内的const/let变量

如果是函数内部声明的const/let变量,同样没有类似window的全局对象可以直接访问,建议用上面的对象/Map封装。别想着用eval,虽然它能实现,但会带来安全风险、性能损耗,还会让代码变得难以维护,完全得不偿失。


内容的提问来源于stack exchange,提问作者mdibuhossain

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 10:40:28