JS中的for in和for of

yizhihongxing

在JavaScript中, for...in for...of 都是用于迭代循环的结构:

 

1. for...in 循环:

for...in 循环主要用于遍历对象的可枚举属性。这种循环不仅遍历对象自身的属性,还会遍历原型链上的可枚举属性。它的语法如下:

for (variable in object) {
  // 执行的代码
}

其中 variable 是属性名, object 是要遍历的对象。

注意:虽然 for...in 循环也可以用于遍历数组,但这并不推荐,因为它会遍历数组的所有可枚举属性,包括非索引属性和原型链上的属性。

 

示例:

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

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

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

 

2. for...of 循环:

for...of 循环用于遍历可迭代对象(例如数组、字符串、Map、Set等),这是ES6引入的新特性。它的语法如下:

for (variable of iterable) {
  // 执行的代码
}

其中 variable 是每次迭代时的当前元素, iterable 是要遍历的可迭代对象。

 

示例:

const arr = [1, 2, 3];

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

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

 

 

  for...in for...of 循环在JavaScript中具有不同的使用场景,它们之间的主要区别如下:

1. 遍历对象:

- for...in :适用于遍历对象的可枚举属性,包括原型链上的属性。它会遍历对象自身的属性以及继承自原型链的可枚举属性。这对于处理对象属性时非常有用。
- for...of :不适用于普通对象,因为它们不是可迭代的。如果需要遍历对象属性,建议使用 for...in 循环。

2. 遍历数组:

- for...in :虽然可以用于遍历数组,但并不推荐。因为 for...in 会遍历所有可枚举属性,包括非索引属性和原型链上的属性。这可能导致意外的结果和性能问题。
- for...of :推荐用于遍历数组,因为它只遍历数组的元素,不会遍历非索引属性或原型链上的属性。

3. 遍历其他可迭代对象(例如字符串、Map、Set):

- for...in :不适用于遍历这些可迭代对象。
- for...of :可以遍历这些可迭代对象,如字符串、Map、Set等。

4. 性能:

- for...in :由于需要遍历对象的原型链,可能导致性能较差。
- for...of :遍历可迭代对象时,性能较好。

 

总结:

- 使用 for...in 循环遍历对象的可枚举属性(包括原型链上的属性)。
- 使用 for...of 循环遍历可迭代对象,如数组、字符串、Map、Set等。
- 在处理数组时,尽量避免使用 for...in 循环,以防止意外的结果和性能问题。

 

在实际应用中,根据数据类型和所需操作来选择合适的循环结构。同时,还可以考虑使用其他迭代方法,如数组的 forEach 、 map 、 filter 等高阶函数。

原文链接:https://www.cnblogs.com/ronaldo9ph/p/17332209.html

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

(0)
上一篇 2023年4月20日
下一篇 2023年4月22日

相关文章

  • js调试系列 断点与动态调试[基础篇]

    JS调试系列:断点与动态调试(基础篇)是一篇介绍JavaScript调试的基础知识和调试技巧的文章。 本文主要介绍了调试中的两个基础概念——断点和动态调试,以及如何在Chrome浏览器中使用这两种调试方式来定位和解决JavaScript代码问题。 以下为本文的详细攻略: 断点调试 断点介绍 断点是指我们在代码某一处打上标记,当程序执行到这一处时会自动停下来,…

    JavaScript 2023年6月11日
    00
  • JS中parseInt()和map()用法分析

    JS中parseInt()和map()用法分析 parseInt() parseInt()是一个全局函数,用于解析字符串并返回整数。该函数接受两个参数:要解析的字符串和一个表示解析进制的参数。 parseInt(string, radix) 其中,string是要转换的字符串,radix是一个可选参数,表示要解析的字符串的进制数。 如果省略radix参数,则…

    JavaScript 2023年5月28日
    00
  • JavaScript iframe数据共享接口实现方法

    JavaScript iframe数据共享接口实现方法可以通过以下步骤实现: Step 1: 跨域嵌入iframe 首先,需要在父页面中嵌入一个iframe来承载子页面,例如: <iframe src="http://子页面链接" id="myIframe"></iframe> 需要注意的是,子…

    JavaScript 2023年6月11日
    00
  • 谈谈JavaScript中的函数

    当谈到JavaScript中的函数时,它是一个非常重要的主题,因为函数在JavaScript中是至关重要的概念之一。因此,它应该是每一个JavaScript开发者的必备技能之一。 函数的定义 JavaScript函数是定义在JavaScript程序中的重要代码块,用于执行特定的任务。它们是JavaScript编程的基本组成部分。在函数中,代码可以被重复利用,…

    JavaScript 2023年5月18日
    00
  • JavaScript Window窗口对象属性和使用方法

    JavaScript Window窗口对象属性和使用方法 JavaScript中的Window对象是浏览器窗口的根对象,可以通过Window对象来获取和操作窗口的各种属性和方法。 获取窗口属性 Window.innerHeight和Window.innerWidth属性 Window.innerHeight属性和Window.innerWidth属性分别用于…

    JavaScript 2023年5月27日
    00
  • 详解javascript函数写法大全

    详解JavaScript函数写法大全是一篇包含了众多 JavaScript 函数使用和写法范例的文档,让开发人员能够更好地理解和运用 JavaScript 函数。下面我将分为四个部分详细讲解这篇攻略。 一、函数声明和函数表达式 JavaScript 中函数的写法主要分为函数声明和函数表达式两种方式。 函数声明 使用 function 关键字定义的函数叫函数声…

    JavaScript 2023年5月17日
    00
  • 细说javascript函数从函数的构成开始

    细说JavaScript函数从函数的构成开始 JavaScript 函数是程序中的基础组件之一。在本文中,我们将深入了解 JavaScript 函数,包括函数的构成、参数传递和作为值的函数等。 函数的构成 JavaScript 函数由函数名称、参数列表、函数体和返回值组成。下面是一个最简单的 JavaScript 函数示例: function sayHell…

    JavaScript 2023年5月27日
    00
  • 如何用javascript控制上传文件的大小

    当我们需要上传文件时,通常需要限制文件大小以确保上传的文件尺寸在合理范围内。在javascript中,我们可以使用以下方法来控制上传文件的大小。 1. 使用input元素限制文件大小 在HTML中,我们可以使用input元素来处理文件上传。如果我们将input元素的type属性设置为file类型,则该元素将允许用户选择本地计算机上的文件,并在提交提交表单时将…

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