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

JavaScript如何在for循环中拼接字符串与整数创建动态命名变量?

问题核心

你当前的写法无法实现动态命名变量的需求:循环内的nearby_ports_x是固定名称的变量,每轮循环都会覆盖上一轮的赋值,不会自动生成带x序号后缀的nearby_ports_0、nearby_ports_1系列变量。JavaScript 不支持直接将迭代变量的值拼接为变量标识符直接声明使用。

最优实现:数组存储(强烈推荐)

不要生成零散的独立全局变量,用数组按索引存储结果是最规范的实现方式,后续调用逻辑和你预期的序号规则完全对应,还不会污染全局作用域:

// 提前缓存DOM集合,避免每次循环重复查询DOM提升性能
const portDoms = document.getElementsByClassName("nearby_ports");
const nearbyPorts = [];
for (let x = 0; x < portDoms.length; x++) {
    nearbyPorts[x] = portDoms[x].href;
}

后续取值时直接按索引访问即可:nearbyPorts[0]就是你要的nearby_ports_0对应的值,nearbyPorts[1]对应nearby_ports_1,以此类推。
如果想要更简洁的写法,可以直接用Array.from一步完成转换:

const nearbyPorts = Array.from(document.getElementsByClassName("nearby_ports"), item => item.href);
备选实现:动态生成独立命名变量

如果你必须要生成nearby_ports_0这类独立命名的变量,可以在浏览器环境下通过挂载window属性实现,但不推荐该方案,会污染全局命名空间,后续维护、遍历都更麻烦:

const portDoms = document.getElementsByClassName("nearby_ports");
for (let x = 0; x < portDoms.length; x++) {
    window[`nearby_ports_${x}`] = portDoms[x].href;
}

执行完成后就可以直接在全局作用域访问nearby_ports_0、nearby_ports_1这类变量。如果不想污染全局,也可以自定义一个空对象作为存储载体,将动态命名的属性挂载到对象上,比直接挂window更安全。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 01:33:18