JavaScript中如何通过拼接字符串访问全局预定义变量?
嘿,这个问题挺常见的,我来给你捋清楚怎么解决~
核心思路:利用全局对象访问动态变量名
你现在的代码打印的是字符串s0,而不是变量s0的值,原因是你只是把s和i拼接成了字符串,没有去访问对应的变量。要实现这个需求,关键是利用全局对象——在浏览器里所有全局变量都会挂载到window对象上,Node.js环境则对应global对象。
修改后的代码(浏览器环境)
// 先修正你原代码里的小问题:声明多个变量时不需要重复写var var s0 = "Hello", s1 = "Bye"; // 把循环条件改成i < 2,这样才能遍历到s0和s1两个变量 for(var i = 0; i < 2; i++) { // 用方括号语法访问window对象的属性,属性名就是拼接出来的"s0"、"s1" console.log(window["s" + i]); }
运行这段代码,控制台就会依次输出Hello和Bye啦~
如果是Node.js环境
只需要把window换成global就行:
var s0 = "Hello", s1 = "Bye"; for(var i = 0; i < 2; i++) { console.log(global["s" + i]); }
更稳妥的替代方案(不依赖全局对象)
其实直接依赖全局对象不是最佳实践,尤其是在复杂项目里容易导致变量污染。更推荐的方式是把这些变量放到一个普通对象中,然后同样用方括号语法访问:
// 把字符串统一存到一个对象里 const stringStore = { s0: "Hello", s1: "Bye" }; for(var i = 0; i < 2; i++) { console.log(stringStore["s" + i]); }
这种方式更清晰,也更容易维护~
内容的提问来源于stack exchange,提问作者mrwadepro
相关产品推荐
相关产品推荐

