为什么这个JS for-in循环只记录属性的键,而不是整个属性?

时间:2015-02-06 22:31:21

标签: javascript arrays for-in-loop

MDN说:

  

for..in语句以任意顺序迭代对象的可枚举属性。对于每个不同的属性,可以执行语句。

如果我输入此JavaScript代码:

var myObject = {0:'cat', 1:'dog', 2:'fish'};

for (var x in myObject) {
    console.log(x);
}

我得到了这个输出:

0
1
2

如果它在可枚举的属性"上进行迭代,为什么不记录整个属性,就像这样?

0: 'cat'
1: 'dog'
2: 'fish'

我意识到我可以通过myArray['x']记录这些值,但我想知道为什么它只记录密钥。

这仅仅是for-in循环的内置逻辑的一部分,并且与它们的预期用途有关吗?

1 个答案:

答案 0 :(得分:4)

这是循环中javascript的预期行为。如果你想要属性的值,那么你应该这样做:

var myObject = {0:'cat', 1:'dog', 2:'fish'};

for (var x in myObject) {
    console.log(myObject[x]);
}

在您的示例对象中,您有三个属性。这些属性的名称是0,1和2.这些属性的值是" cat"," dog"和" fish"。对于in循环,枚举属性的名称而不是值。