在javascript中使用for循环访问对象属性

Accessing object properties in javascript using for loop?

本文关键字:循环 访问 对象 属性 for javascript      更新时间:2023-09-26

考虑以下对象:

var nyc = {
fullName: "New York City",
mayor: "Bill de Blasio",
population: 8000000,
boroughs: 5
};

当我尝试使用for循环访问每个属性时:

for(var key in nyc){
console.log(nyc[key]);
}

它返回正确的输出(属性值),但是…

for(var key in nyc){
console.log(nyc.key);
}

这返回"undefined"在4行

为什么奇怪的行为,因为两者:

console.log(nyc.fullName);
console.log(nyc['fullName']);

nyc.key查找名称为key的属性,而不是查找名称为变量key的属性。您的第一个示例nyc[key]是使用变量的属性名的正确方法。

在JavaScript中,你可以使用点符号和属性名文字 (obj.foo),或者括号符号和属性名字符串 (obj["foo"])来访问对象属性。在第二种情况下,您可以使用任何表达式来获取字符串,包括变量查找。(在ES6中,您也可以使用带括号符号的Symbol s,但这里不相关。)