myObj.FirstName = 'Phillip',
myObj.LastName = 'Senn';
for (var X in myObj) // FirstName LastName
for each (var X in myObj) // Phillip Senn
问:在精神上,您如何阅读这两个陈述?
答案 0 :(得分:7)
第一个(for ( in )
)正在从对象中读取属性名称。
因此,您可以在myObj
中将其作为读取,并将其分配给x
。
第二个(for each ( in )
)正在读取对象中属性的值。
对于myObj
中每个属性的值,可以将此文件读作,并将其分配给x
。
请注意,for each
限制了浏览器支持。
另请注意,如果额外属性出现在for ( in )
中,那是因为它会查找原型链以获取额外的可枚举属性(例如,某些人可能会增加Object
。) p>
你可以用......来缓解这个问题。
for (var x in myObj) {
if ( ! myObj.hasOwnProperty(x)) {
continue;
}
// Now you are sure the property is of `myObj`
}
答案 1 :(得分:1)
for (var a in b)
是获取给定数组a
的索引b
的一种方法。当我在阅读代码时对自己嘀咕时,我通常会说“为X
中的每个myObj
”。
如果您使用each
关键字,则会在myObj
中检索对象(或数组)的值。如果省略它,myObj
将包含键(或数组索引)。
答案 2 :(得分:1)
for(var X in myObj)
对于myObj中的每个成员(键)
for each(var X in myObj)
对于myObj中的每个成员,获取其值
答案 3 :(得分:1)
for
遍历对象属性的名称,而for each
遍历属性的值。
请参阅MDN上的for each