如何通过变量值拼接变量名获取对应JavaScript变量的值?
实现思路
你原来的写法是将字符串进行拼接,最终得到的是"costOfApples1"这类字符串值,而非对应变量的实际存储数值,因此无法达到预期效果。这里给出两种可行的实现方案,首推对象映射方案,逻辑清晰且兼容性高。
方案1:对象映射(推荐)
将不同购买数量对应的价格存储在对象中,通过键名直接匹配取值,不需要依赖变量作用域,代码可维护性更高:
// 定义购买数量与对应价格的映射关系 const costMap = { 1: 2, 2: 5, 3: 9 } // prompt返回值为字符串类型,需转为数字 const howManyApples = Number(prompt("How many packets of apples do you want?")) const costOfApples = costMap[howManyApples] // 可选:增加输入合法性校验 if (!costOfApples) { alert("请输入1、2、3范围内的有效数值") }
方案2:动态读取变量(不推荐)
如果你必须保留原来的costOfApples1/2/3独立变量定义,且这些变量定义在全局作用域下,可以通过window对象读取:
costOfApples1 = 2 costOfApples2 = 5 costOfApples3 = 9 const howManyApples = Number(prompt("How many packets of apples do you want?")) // 从全局作用域读取对应变量的值 const costOfApples = window[`costOfApples${howManyApples}`]
注意:该方案仅在全局作用域下生效,如果变量定义在函数等局部作用域中会读取失败,不建议在生产环境使用。
内容的提问来源于stack exchange,提问作者cdis
相关产品推荐
相关产品推荐

