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

传递键值时JavaScript函数返回undefined的问题排查

问题分析与解决方案

这个问题的核心是你在访问对象属性时用错了语法,导致无法正确获取到目标属性值~

问题根源

在你的代码里,var b = matrix.a;这一行是关键错误:JavaScript里的点语法(.)会把后面的a当成字面量属性名,也就是它会去matrix对象里找名为"a"的属性,而不是把变量a的实际值(也就是传入的"key1")作为键名去查找,所以最终返回了undefined。

修正后的代码

只需要把属性访问的语法改成方括号[]形式,就能解决问题,完整代码如下:

var testfunc = function(a) { 
  var matrix = { 
    key1: ["first", "second"], 
    key2: ["third", "fourth"] 
  }; 
  var b = matrix[a]; // 改用方括号语法,用变量值作为键名
  console.log(a); 
  console.log(b); 
} 
var otherfunc = function() { 
  return "key1"; 
} 
testfunc(otherfunc());

语法区别说明

  • 点语法(.):只能用于固定的、已知的属性名,比如matrix.key1,这里的属性名是写死的字符串"key1"。
  • 方括号语法([]):可以接受变量、表达式作为键名,它会先计算括号内的值,再用这个结果去对象中匹配对应的属性,完美适配你这里用变量动态获取属性的场景。

运行修正后的代码,控制台就会输出你预期的结果:

key1
["first", "second"]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:17:39