无名阁,只为技术而生。流水不争先,争的是滔滔不绝。

(for of js) js中for-in和for-of的区别详解 在JavaScript中有两种循环语法:forin和forof 全网首发(图文详解1)

前沿技术 Micheal 6个月前 (06-26) 77次浏览 已收录 扫描二维码

(for of js) js中for-in和for-of的区别详解

在JavaScript中,for-in循环和for-of循环都是用来遍历数据的,但是它们各自的用途和方式有所不同。

for-in循环主要用来遍历对象的属性。它会遍历对象自身的所有可枚举属性(包括继承的可枚举属性)。

示例(for-in):

const object = { a: 1, b: 2, c: 3 };

for (const property in object) {
  console.log(`${property}: ${object[property]}`);
}

// 输出:
// "a: 1"
// "b: 2"
// "c: 3"

for-of循环是ES6新增的语法,主要用来遍历具有 iterator 接口的数据结构的值,如Array、Map、Set、String等。

示例(for-of):

const array = [1, 2, 3];

for (const value of array) {
  console.log(value);
}

// 输出:
// 1
// 2
// 3

需要注意的是,for-in循环可能会引起一些问题:

  • 它会遍历对象原型链上的属性,这可能会获得一些不希望遍历到的属性。
  • 对于数组的遍历,for-in循环可能不按照顺序遍历,且如果给数组的原型增加属性,则这些属性也会被遍历出来。

为了解决这些问题,对于数组应该使用for-of循环,因为它可以按顺序遍历数组的值,不会遍历到原型属性,也不需要使用索引来访问元素。

在不支持for-of的环境中,可以通过以下方式遍历数组元素:

var array = [1, 2, 3];

// 使用传统的 for 循环
for (var i = 0; i < array.length; i++) {
    console.log(array[i]);
}

而对于对象的遍历,可以使用Object.keys()或者Object.entries()来获取一个对象自身的所有可枚举属性的键或键值对数组,然后用for-of循环遍历它们。

示例(使用Object.keys()for-of遍历对象):

const object = { a: 1, b: 2, c: 3 };

for (const property of Object.keys(object)) {
  console.log(`${property}: ${object[property]}`);
}

// 输出:
// "a: 1"
// "b: 2"
// "c: 3"

使用for-infor-of时,应根据数据结构和需求合理选择。总体来说,for-of是迭代数组和其他可迭代对象的首选方式,而for-in主要用于遍历对象的键。
(python datetime.timedelta) Python中的DateTime和TimeDelta详解 Python中的 datetime 模块 全网首发(图文详解1)
(js catch) 优雅而高效的JavaScript try…catch语句详解(js异常处理) JavaScript中try…catch语句基本语法 全网首发(图文详解1)

喜欢 (0)
[]
分享 (0)
关于作者:
流水不争先,争的是滔滔不绝