动态修改变量名:点击按钮向对应标识的数组变量推入Hello
当然可行!
不过具体实现方式要根据你的变量作用域来调整,下面分两种常见场景给你说明:
场景1:数组变量在全局作用域
如果你的数组是直接声明在全局的(比如var x = []; var y = [];),可以通过window对象动态获取对应名字的数组,完成push操作:
// 先初始化全局数组 var x = []; var y = []; // 给所有目标按钮绑定点击事件 document.querySelectorAll('button').forEach(btn => { btn.addEventListener('click', function() { const targetArrayName = this.value; // 检查目标变量是否存在且是数组 if (Array.isArray(window[targetArrayName])) { window[targetArrayName].push('Hello'); console.log(`已把Hello推入${targetArrayName}数组:`, window[targetArrayName]); } else { console.warn(`找不到名为${targetArrayName}的数组变量`); } }); });
场景2:数组变量在局部作用域(更推荐)
如果数组是在函数等局部作用域里,直接通过字符串访问局部变量是行不通的,这时候更建议用一个对象来统一管理所有数组——既避免污染全局作用域,又能通过键名轻松定位目标数组:
function bindButtonActions() { // 用对象的键对应按钮的value值,值对应数组 const arrayStore = { x: [], y: [] }; document.querySelectorAll('button').forEach(btn => { btn.addEventListener('click', function() { const key = this.value; if (arrayStore[key] && Array.isArray(arrayStore[key])) { arrayStore[key].push('Hello'); console.log(`已把Hello推入${key}数组:`, arrayStore[key]); } else { console.warn(`未配置名为${key}的数组`); } }); }); } // 执行绑定逻辑 bindButtonActions();
小提醒
不管用哪种方式,都要确保目标数组已经被初始化,不然会触发未定义变量的错误。另外,用对象管理数组的方式更符合现代JS的编码规范,后续维护起来也更方便。
内容的提问来源于stack exchange,提问作者Toleo
相关产品推荐
相关产品推荐

