为什么在JavaScript的for of循环中无法正常访问对象属性?
问题原因
你搞混了for...of循环的遍历结果:
for (let user of users)遍历出来的user是users数组里的单个对象元素,不是数组本身- 你在循环里写
user[counter].password,相当于给普通对象加了数字下标取值:第一次循环counter=0,user是{name: "Paul", ...}这个对象,对象本身没有0这个属性,所以user[0]返回undefined,再访问undefined.password自然会抛出类型错误 - 你说的“循环外相同写法”其实和循环内根本不一样:循环外是
users[0].password,users是数组,用下标0取到的是第一个元素对象,当然可以正常访问password属性
修复方案
有两种常用写法可以实现需求:
- 直接用
for...of的遍历结果,不需要额外计数器
for (let user of users) { console.log(user.password); }
- 如果需要用到下标索引,改用普通
for循环遍历数组本身
for (let counter = 0; counter < users.length; counter++) { console.log(users[counter].password); }
内容的提问来源于stack exchange,提问作者Paul
相关产品推荐
相关产品推荐

