JavaScript 中for/of,for/in 的详细介绍

当我们需要遍历一个对象或数组的时候,可以使用 JavaScript 中的 for/of 或 for/in 循环语句。但是它们的使用方式和适用范围有所不同,本文将带你详细介绍这两种循环的语法规则和使用场景。

for/of

for/of 循环主要用于遍历可迭代对象(Iterable),例如数组、Map、Set 等。

for/of 循环语法:

for (variable of iterable) {
  // Code block to be executed
}

其中,variable 是变量名,用于保存每次迭代时的值。iterable 是可迭代对象,也就是需要遍历的对象。在每一次循环,变量 variable 都将已经被分配了一个可迭代对象的下一个值。

以下是一个遍历数组的示例代码:

const myArray = [10, 20, 30, 40, 50];

for (const element of myArray) {
  console.log(element);
}

输出结果:

10
20
30
40
50

另一个示例是,遍历 Map 对象:

const myMap = new Map([
  ['name', '张三'],
  ['age', 18],
  ['gender', '男']
]);

for (const [key, value] of myMap) {
  console.log(`${key}: ${value}`);
}

输出结果:

name: 张三
age: 18
gender: 男

for/in

for/in 循环主要用于遍历对象的属性,例如一个普通对象。

for/in 循环语法:

for (variable in object) {
  // Code block to be executed
}

其中,variable 是变量名,用于保存每次迭代时的属性名称。object 是要遍历的对象。

以下是遍历对象属性的示例代码:

const person = {
  name: '张三',
  age: 18,
  gender: '男'
};

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

输出结果:

name: 张三
age: 18
gender: 男

需要注意的是,for/in 循环也会遍历对象原型链上的属性,因此需要先使用 hasOwnProperty() 方法来判断当前属性是否为对象自身的属性。

const person = {
  name: '张三',
  age: 18,
  gender: '男'
};

person.__proto__.address = '北京市';

for (const key in person) {
  if (person.hasOwnProperty(key)) {
    console.log(`${key}: ${person[key]}`);
  }
}

输出结果:

name: 张三
age: 18
gender: 男

通过以上的例子,我们可以看出 for/of 和 for/in 循环语句的异同点。for/of 循环用于遍历可迭代对象,而 for/in 用于遍历对象的属性。需要根据具体场景来选择使用哪种循环语句。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaScript 中for/of,for/in 的详细介绍 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • element中el-form-item属性prop踩坑

    el-form-item 是 ElementUI 中用于包装表单元素的组件,通常用于和 el-form 配合实现表单功能。el-form-item 提供了一个 prop 属性,用于指定表单项对应数据对象中对应属性的名称。 但是在使用 prop 属性时,需要注意一些坑点: prop 值必须与表单数据对象中的属性名称保持一致,否则表单项将无法与数据对象进行双向绑…

    JavaScript 2023年6月10日
    00
  • 将JavaScript的jQuery库中表单转化为JSON对象的方法

    将JavaScript的jQuery库中表单转化为JSON对象的方法可以使用jQuery中的serializeArray()方法实现。 第一步:选择表单元素 首先需要使用jQuery的选择器选择表单元素,例如: var $form = $(‘form’); 第二步:使用serializeArray()方法将表单数据序列化为数组 var formArray =…

    JavaScript 2023年5月27日
    00
  • 在iframe里的页面编写js,实现在父窗口上创建动画效果展开和收缩的div(不变动iframe父窗口代码)

    让我们一步步来实现在iframe里的页面编写js,实现在父窗口上创建动画效果展开和收缩的div,不改变iframe父窗口代码。 首先,我们需要在iframe里的页面编写js,并且通过iframe的parent对象进行与父窗口的交互。以下是大致的步骤: 在iframe页面中编写HTML代码和JS代码,创建一个可以进行展开和收缩的div,并设置好div的初始状态…

    JavaScript 2023年6月11日
    00
  • JS Pro-深入面向对象的程序设计之继承的详解

    JS Pro-深入面向对象的程序设计之继承的详解 本攻略将从以下内容入手,逐步深入探讨JavaScript面向对象编程中的继承。 原型链继承 构造函数继承 组合继承 原型式继承 寄生式继承 寄生组合式继承 原型链继承 原型链继承,顾名思义,指的是连接原型链的方式进行继承。简单来说,就是在子类的构造函数中通过关联父类的原型实现继承。 function Pare…

    JavaScript 2023年5月27日
    00
  • Javascript函数技巧学习

    下面是详细的讲解“JavaScript函数技巧学习”的完整攻略。 一、入门和基础知识 首先需要熟悉JavaScript函数基础知识,例如函数的定义、调用、参数、返回值等。同时需要了解函数作用域、闭包、箭头函数等高级概念。 二、函数式编程 掌握函数式编程是成为JavaScript高手的必要技能。函数式编程通过组合函数和避免副作用来提高代码的可读性和可维护性,使…

    JavaScript 2023年5月17日
    00
  • JavaScript requestAnimationFrame动画详解

    下面是详细讲解“JavaScript requestAnimationFrame动画详解”的完整攻略。 一、什么是requestAnimationFrame requestAnimationFrame是一个用于浏览器动画渲染的API,它可以被用来优化动画循环的性能。相较于使用setTimeout或setInterval方法,使用requestAnimatio…

    JavaScript 2023年6月10日
    00
  • pnpm 之降本增效

    作者:京东科技 于振京 受众简介 前端研发工程师 还在为npm i安装大量依赖等待时间较长,npm扁平化node_modules依赖版本冲突在苦恼吗,不用苦恼pnpm为你保驾护航 主要影响:安装依赖包的过程,假如使用的是npm install会根据package-lock.json进行软件包的安装,如果没有package-lock.json会根据packag…

    JavaScript 2023年4月17日
    00
  • 前端通过JavaScript创建修改CAD图形详情

    创建和修改CAD图形一般通过CAD软件进行,但是我们也可以通过前端JavaScript开发框架来创建和修改CAD图形,主要分为以下几个步骤: 了解CAD图形基础知识:CAD图形通常包含了几何图形、属性信息和坐标系信息。在JavaScript中,需要使用相关库或API来处理这些信息。 选择适合的库或API:在JavaScript中,有多种库和API可供选择来创…

    JavaScript 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部