理解 for...in 和 for...of 语句之间的区别
在 JavaScript 循环领域,for.. .in 和 for...of 语句经常会产生混乱。虽然 for...in 一直是迭代属性的基石,但 for...of 在 ES6 中出现是为了专门针对值。本文深入探讨了这两种构造之间的主要区别。
for...in:遍历属性名称
For...in 循环迭代可枚举属性对象的名称。如示例所示,它成功记录了“0”、“1”、“2”和“foo”,它们代表数组的索引键和数组对象的“foo”键。
for...of:提取属性值
相反,for...of 使用特定于对象的迭代器来遍历该迭代器生成的值。在示例中,数组迭代器仅生成数组内的值,即“3”、“5”和“7”。这种行为源于迭代器被设计为仅关注值的事实。
非索引属性的非迭代
值得注意的是, for...of 确实不迭代非索引属性。在示例中,未记录包含值“hello”的“foo”属性。这是因为数组迭代器仅生成与数组索引关联的值。
示例:以值为中心的迭代
为了说明这一点,以下循环应记录数组值以及“foo”属性值,但它仅记录数组值:
for (var i of arr) { console.log(i); // logs "3", "5", "7" }
此行为强化了了解 for...of 是专门为迭代值而构建的,不包括非索引属性。
以上是JavaScript 的 `for...in` 和 `for...of` 循环之间的主要区别是什么?的详细内容。更多信息请关注PHP中文网其他相关文章!