ECMAScript 2021 (ES12) 中的 for-in 循环与 for-of 循环的区别及其应用场景

ECMAScript 2021 (ES12) 中的 for-in 循环与 for-of 循环的区别及其应用场景

在 ECMAScript 2021 中,新引入了 for-in 循环和 for-of 循环两种不同类型的循环。在本文中,我们将深入探讨这两种循环的区别以及它们各自的应用场景。

for-in 循环

for-in 循环用于遍历对象的可枚举属性。它的语法如下:

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

其中,variable 代表变量名,在循环过程中它将被赋值为当前属性名;而 object 则代表要遍历的对象。

然而,需要注意的是,由于 for-in 循环遍历对象的可枚举属性,因此在遍历中可能会出现以下情况:

  • 遍历顺序不确定
  • 遍历顺序可能会受到原型链的影响
  • 可能会遍历到非自有属性

因此,我们在使用 for-in 循环时,需要考虑到这些情况,并针对具体情况进行处理。

以下是一个 for-in 循环的示例代码:

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

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

结果输出:

- - -
- - -
- - -

for-of 循环

for-of 循环用于遍历可迭代对象中的元素。它的语法如下:

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

其中,variable 代表变量名,在循环过程中它将被赋值为当前元素;而 iterable 则代表要遍历的可迭代对象。

需要注意的是,for-of 循环只能遍历实现了迭代协议的对象,比如 Array 和 String 等。

以下是一个 for-of 循环的示例代码:

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

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

结果输出:

-
-
-

for-in 循环与 for-of 循环的应用场景

通过上面的介绍,我们已经了解了 for-in 循环和 for-of 循环的用法和语法。接下来,我们将分别介绍它们各自的应用场景。

for-in 循环

由于 for-in 循环遍历的是对象的可枚举属性,因此它适用于以下场景:

  • 遍历对象的属性并进行处理
  • 遍历对象的属性并获取属性名或属性值

以下是一个应用 for-in 循环遍历对象属性并输出属性名和属性值的示例代码:

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

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

结果输出:

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

for-of 循环

由于 for-of 循环遍历的是可迭代对象的元素,因此它适用于以下场景:

  • 遍历数组并对每个元素进行处理
  • 遍历字符串并对每个字符进行处理

以下是一个应用 for-of 循环遍历数组并输出数组元素的示例代码:

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

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

结果输出:

-
-
-

总结

通过本文,我们介绍了 ECMAScript 2021 中 for-in 循环和 for-of 循环的语法、用法以及各自的应用场景。要注意的是,在使用这两种循环时,需要根据具体情况选择合适的循环类型,并注意循环中可能出现的情况,并针对具体情况进行处理。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/652ed66f7d4982a6ebfeef96


猜你喜欢

  • ES6 中字符串新增的方法及其使用示例

    在 ES6 中,字符串新增了许多方便的方法,这些方法可以帮助我们更加轻松地处理字符串。本文将介绍 ES6 中新增的一些字符串方法,并提供使用示例。 1. includes includes 方法用于判...

    1 年前
  • RxJS 中如何使用 catchError() 操作符处理服务器错误并进行回退

    RxJS 中使用 catchError() 操作符处理服务器错误并进行回退 在我们的 Web 应用程序中,从服务器获取数据是一项非常重要的任务之一。然而,在现实世界中,可能会出现许多错误,例如服务器故...

    1 年前
  • Hapi.js 常用插件及使用技巧分享

    Hapi.js 是一个基于 Node.js 平台的 web 框架,它提供了丰富的插件系统和强大的路由控制,使得开发者能够更快速、更方便地构建高性能的 web 应用程序。

    1 年前
  • MongoDB 多节点部署攻略:实现数据稳定性和高可用性!

    在实际开发项目过程中,数据的稳定性和高可用性是至关重要的。而 MongoDB 是其中一款非常流行的 NoSQL 数据库,因其方便的集群部署而备受欢迎。本文将重点讲解如何进行 MongoDB 多节点部署...

    1 年前
  • Cypress 自动化测试常见问题:Page loading has timed out 问题如何处理?

    Cypress 是一款流行的前端自动化测试框架,它的高效性和易用性备受开发者们的喜爱。在使用 Cypress 进行自动化测试的过程中,经常会遇到一些问题。其中,“Page loading has ti...

    1 年前
  • ESLint 如何识别和修复代码中的重复语句

    作为一名前端开发工程师,我们编写代码可以使用许多现代的开发工具和框架,如 VS Code、React 和 Angular。但是,这些工具不能保证我们编写的代码无 bug。

    1 年前
  • 使用 Enzyme 进行 React 组件 TDD 开发的实例详解

    如今,前端开发已经成为互联网行业中最热门的职业之一。在这个领域,React 作为一个强大的前端开发框架,已经成为了首选。 随着前端开发团队越来越重视代码质量以及开发效率,TDD(Test-Driven...

    1 年前
  • PWA 实战 | 如何解决网络请求超时?

    前言 随着移动设备和互联网技术的不断发展,越来越多的网站都开始采用 PWA 技术。PWA 全称是 Progressive Web App,意为渐进式 web 应用程序。

    1 年前
  • 使用 Socket.io 和 Phaser.js 创建实时对战游戏

    介绍 Socket.io 是一个基于 Node.js 的实时应用程序库,可用于创建实时 Web 应用程序,如聊天应用程序和多人游戏。而 Phaser.js 则是一个为浏览器打造的快速、免费、开源的 H...

    1 年前
  • GraphQL 中的 JSON 处理方案

    GraphQL 作为一种 API 查询语言,已经被越来越多的应用程序广泛采用。在 GraphQL 中,查询规范和响应的数据都使用 JSON 格式表示。JSON 作为一种常用的数据交换格式,是在前端和后...

    1 年前
  • Material Design 设计规范中的响应式技术解析

    Material Design 是谷歌推出的一套跨平台的设计规范,涵盖了 Android、Web 和 iOS 平台,旨在提供一致的用户体验。其中,响应式设计是其核心思想之一,意味着 UI 元素可以在不...

    1 年前
  • TypeScript 中的数组类型:如何定义和使用

    在前端开发中,数组类型是非常常见和重要的数据类型。而 TypeScript 作为 JavaScript 的超集,为我们提供了更加严格的类型检查能力,使得我们可以更安全地对数组进行操作。

    1 年前
  • 使用 Jest 测试 CI/CD 的正确姿势

    在前端工程中,自动化测试是一个非常重要的环节,而 CI/CD 则是保证代码质量的重要手段。在 CI/CD 环境中,测试是必不可少的一个环节,Jest 作为一个出色的测试框架,可以帮助我们完成单元测试、...

    1 年前
  • 使用 Chai-jQuery 验证 jQuery 操作是否正确

    作为前端开发者,我们经常使用 jQuery 来操作页面元素和处理交互逻辑。为了保证代码的正确性,我们需要对 jQuery 操作进行测试。本文将介绍如何使用 Chai-jQuery 来验证 jQuery...

    1 年前
  • 如何在 JavaScript 开发中使用 ECMAScript 2017 的 Array.prototype.flatMap() 方法实现数组扁平化处理

    在 JavaScript 开发中,我们经常需要处理数组扁平化的问题。在 ECMAScript 2015 规范中,JavaScript 引入了 Array.prototype.flat() 方法来解决这...

    1 年前
  • 如何使用 Node.js 与 Angular 构建全栈 JavaScript 应用

    随着 JavaScript 技术的不断发展和普及,全栈 JavaScript 开发逐渐成为趋势。而 Node.js 和 Angular 是两个广受欢迎的 JavaScript 技术,使用它们来构建全栈...

    1 年前
  • Promise 并行任务的正确实现方案

    Promise 并行任务的正确实现方案 Promise 是 JavaScript 中处理异步编程的一种方式,它可以方便地管理异步操作和处理错误。在实际开发中,我们常常需要处理多个异步操作,其中一些操作...

    1 年前
  • ES9 中对象和数组的新特性:sigil properties 和后缀表达式

    JavaScript 是一门不断发展的语言,在 ES9 中又增加了一些对前端开发者来说非常有用的新特性。本文将介绍 ES9 中的 Sigil Properties 和后缀表达式,它们能够提高我们的开发...

    1 年前
  • Express.js 错误解决:Error: Cannot find module 'body-parser'

    近年来,前端技术迅速发展,Express.js 成为了 Node.js 中最常用的 Web 框架之一。然而,作为一个开源框架,它也存在着一些常见的错误。本文将针对其中一个常见错误:Error: Can...

    1 年前
  • 如何在 Sequelize 中使用 Model 实例的瞬态字段?

    Sequelize 是一个强大的 ORM 库,它允许开发人员定义数据模型,并与数据库进行交互。在 Sequelize 中,每个数据模型都可以视为一个 Model 实例,它描述了与数据存储区的交互。

    1 年前

相关推荐

    暂无文章