合理使用 ES7 中的 for...of 和 for...in 循环

阅读时长 5 分钟读完

在前端开发中,循环是一个基础且重要的部分。ES7 中引入的 for...of 和 for...in 循环提供了新的遍历方式,可以让我们更加高效和灵活地处理数据结构。但如果不理解其使用方式,就会导致代码出现错误,影响代码的可读性和性能。因此,在本文中,我们将详细介绍如何合理使用 ES7 中的 for...of 和 for...in 循环。

for...of 循环

for...of 循环提供了一种新的遍历方式,可以让我们更加简单和高效地遍历数组、类数组对象、字符串、集合和映射等数据结构。

数组的遍历

在传统的循环中,我们可以使用 for 循环和数组下标的方式遍历数组元素,代码如下:

但使用 for...of 循环可以更加简单和高效,代码如下:

类数组对象的遍历

类数组对象是指拥有 length 属性和索引元素的对象,如 arguments 对象、NodeList 对象等。在传统的循环中,我们需要将类数组对象转换为数组对象,然后使用 for 循环和数组下标的方式遍历元素,代码如下:

-- -------------------- ---- -------
-------- ----- -
  --- ----- - --
  ----- ---- - --------------------------------------

  --- ---- - - -- - - ------------ ---- -
    ----- -- --------
  -
  
  ------ ------
-

------------------ -- -- -- ---- -- --

但使用 for...of 循环可以直接遍历类数组对象中的元素,代码如下:

-- -------------------- ---- -------
-------- ----- -
  --- ----- - --

  --- ------ --- -- ---------- -
    ----- -- ----
  -

  ------ ------
-

------------------ -- -- -- ---- -- --

字符串的遍历

在传统的循环中,我们可以使用 for 循环和字符串下标的方式遍历字符串的字符,代码如下:

但使用 for...of 循环可以更加简单和高效,代码如下:

集合和映射的遍历

集合和映射是 ES6 新增的数据结构,它们都具有迭代器(Iterator)接口。在 ES7 中,可以使用 for...of 循环遍历集合和映射中的元素,代码如下:

-- -------------------- ---- -------
----- --- - --- ------- -- -- -- ----

--- ------ ---- -- ---- -
  ------------------
-

----- --- - --- ------------- ------- ------- ------

--- ------ ----- ------ -- ---- -
  ---------------- -------
-

for...in 循环

for...in 循环也是一种遍历方式,可以用来遍历对象的属性。但与 for...of 循环不同的是,for...in 循环遍历的是对象的可枚举属性,包括对象自身的属性和继承的属性。

遍历对象属性

在传统的循环中,我们可以使用 for...in 循环遍历对象的属性,代码如下:

-- -------------------- ---- -------
----- ------ - -
  ----- ------
  ---- ---
  ------- ------
--

--- ------ --- -- ------- -
  --------------- - -- - - -------------
-

但需要注意的是,for...in 循环也会遍历对象继承的属性,例如 Object.prototype 上的 toString 方法,代码如下:

-- -------------------- ---- -------
----- ------ - -
  ----- ------
  ---- ---
  ------- ------
--

--- ------ --- -- ------- -
  --------------- - -- - - -------------
-

如果只想遍历对象自身的属性,可以使用 Object.keys 方法获取对象的所有可枚举属性,然后使用 for...of 循环遍历属性,代码如下:

-- -------------------- ---- -------
----- ------ - -
  ----- ------
  ---- ---
  ------- ------
--

--- ------ --- -- -------------------- -
  --------------- - -- - - -------------
-

总结

在合理使用 ES7 中的 for...of 和 for...in 循环的过程中,需要注意以下几点:

  1. for...of 循环只能遍历具有 Iterator 接口的数据结构;
  2. for...in 循环遍历的是对象的可枚举属性,包括对象自身的属性和继承的属性;
  3. 在使用 for...in 循环遍历对象的同时要注意避免遍历对象原型上的属性;
  4. 在使用 for...of 循环遍历元素时,避免在循环体内修改被遍历的数据结构。

正确使用 for...of 和 for...in 循环将会大大提高代码效率和可读性,降低出错的概率。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/653a4f277d4982a6eb43e050

纠错
反馈