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

JS函数参数无法用于JSON对象属性访问问题排查

问题描述

现有如下数组对象:

const myObj = [
{
 "name": "harry",
 "id_1": "j-347",
 "id_2": "j-303"
}, 
{
 "name": "liouk",
 "id_1": "k-398",
 "id_2": "k-945"
}
]

直接访问harry的id_1可以用myObj[0].id_1,但编写了如下函数:

function getId(counter, id) {
 console.log(counter);
 console.log(id)
 console.log(myObj[counter].id;
}

调用getId(0, "id_1")时得到:

0
id_1
undefined

此外,删除console.log(id)后,代码编辑器提示'id已声明但未被使用',但明明在最后一行使用了它。似乎参数"id_1"无法在.后被识别,请问哪里出错了?

问题原因与解决方法
  • 存在语法错误:最后一行console.log(myObj[counter].id;缺少闭合括号,正确写法应为console.log(myObj[counter].id);,但这不是核心问题。
  • 对象属性访问方式错误:点语法(.)后只能跟固定的属性名,不能直接使用变量。当你写myObj[counter].id时,JS会去查找对象中名为id的属性,而非你传入的变量id的值id_1,所以返回undefined,同时编辑器判定变量id未被真正使用,才会弹出提示。

正确写法需改用方括号语法访问属性,将变量放入方括号中:

function getId(counter, id) {
 console.log(counter);
 console.log(id)
 console.log(myObj[counter][id]);
}

调用getId(0, "id_1")时,就能正确获取到j-347,编辑器也不会再提示id未使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 05:19:59