为什么我们不能使用普通的 for 循环来打印 javascript 对象?

Why we cant use normal for loop to print javascript object?

我正在学习JavaScript,所以今天我偶然发现要打印或获取对象属性,使用 for..in 循环。但我在这里感到困惑,因为我以前没有见过 for..in 循环。所以我遇到了一个问题,为什么我们不能在 JavaScript 中使用 for 循环来打印对象 属性?这个 for..in 循环是如何工作的? 这是一个例子。

let object1 = {
name : 'someone',
name2 : 'someone2',
phno : 234568969
};

并打印每个人的建议

for(let key in object1)
{
console.log(key + "=" + object1[key]);
}

我的问题是这个循环是如何工作的,以及为什么这个循环用于打印属性。

for... of相反,for... in循环将遍历对象的可枚举属性(不是它们的值)。

在上面的示例中,您正在遍历对象(“属性标签”)的 ,然后使用它们访问 object1.

上的值

下面的示例将更清楚地演示 for... in 循环的工作原理。

const arr = [23, 45, 67, 56];

for(let index in arr) {
  // Note that only the indexes of the array are 
  // assigned to 'index', not the values
  console.log('Index:', index);
  
  // To access the values, you should do:
  console.log('Value:', arr[index])
}

对象也是如此:

const obj = {
  prop1: 'val 1',
  prop2: 2,
  prop3: { nestedObjProp: 'Nested Object Value' }
}

for(let key in obj) {
  console.log('Key:', key, '  Value:', obj[key]);
}

有关 for... in 循环的更多信息,请参阅 MDN 网络文档上的 for... in

为什么我们不能在JavaScript中使用for loop(Normal)来打印对象属性?
回答。因为对象是键值对,不是数组。

这个 for..in 循环是如何工作的?
回答。循环遍历对象的属性。 (可用于获取 object[属性] 之类的值)。

注:属性表示密钥。

如果您想遍历一个数组,您也可以使用简单的 for 循环,如下所示。

var x = [1, 2, 3];

var i;
for (i = 0; i < x.length; i++) {
  console.log(x[i]);
}