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

如何通过函数参数访问对应对象?现有代码返回undefined求解决

问题解决:通过函数参数访问对应对象

你当前的写法错误在于,[obj${num}]生成的是一个包含字符串(比如"obj1")的数组,而非直接引用变量obj1;直接写obj${num}也只是字符串,无法当作变量名访问对应的对象,所以会返回undefined。

正确解决方案:使用容器对象映射

最安全且易维护的方式是把目标对象放到统一的容器对象中,通过参数作为键访问对应值:

function fnc(num) {
  const objMap = {
    1: { whatever: "foo1" },
    2: { whatever: "foo2" }
  };
  console.log(objMap[num].whatever);
}

fnc(1); // 输出 foo1

如果要保留原变量名的命名逻辑,也可以这样写:

function fnc(num) {
  const obj1 = { whatever: "foo1" };
  const obj2 = { whatever: "foo2" };
  const objMap = { obj1, obj2 }; // ES6简写,等价于 { obj1: obj1, obj2: obj2 }
  console.log(objMap[`obj${num}`].whatever);
}

fnc(1); // 输出 foo1

不推荐的方案:使用eval

虽然eval能实现动态变量访问,但它会执行传入的任意代码,存在安全风险(比如参数被注入恶意代码),同时会降低代码可读性与可维护性,因此不建议使用:

function fnc(num) {
  const obj1 = { whatever: "foo1" };
  const obj2 = { whatever: "foo2" };
  console.log(eval(`obj${num}`).whatever);
}

fnc(1); // 输出 foo1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 08:20:49