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

JavaScript遍历对象数组时person.name有效但personData.name返回undefined原因求解

问题解答

你遇到的差异本质是两次访问的目标对象完全不同,和${}模板字符串语法本身没有关系:

  • 首先先明确${}的作用:这是ES6标准推出的模板字符串插值语法,仅在反引号``包裹的字符串中生效,作用是把花括号内的表达式计算结果插入到字符串的对应位置。
  • 循环中可以正常取值的原因:for(let person of personData)是数组的迭代遍历语法,每一轮循环都会把personData数组中对应的元素赋值给临时变量person。你的personData数组中存储的每个元素都是带有name、age属性的对象,所以person.name自然可以读取到对应对象的属性值。
  • 直接打印返回undefined的原因:personData本身是数组类型,你没有给这个数组对象定义过name属性,JS中访问对象不存在的属性时默认返回undefined,和是否使用模板字符串无关。如果你要直接读取数组内对象的属性,需要先指定数组下标定位到具体元素,比如personData[0].name就能拿到第一个元素的name值Dylan。

你可以简单理解为循环等价于依次执行了以下逻辑:

// 依次取出数组的每个元素赋值给person
let person = personData[0]
console.log(person.name) // Dylan
person = personData[1]
console.log(person.name) // Hannah
// 以此类推遍历完所有元素

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 23:09:04