首页 > 其他分享 >08 ES6的for...of和for...in的区别

08 ES6的for...of和for...in的区别

时间:2024-07-21 14:27:00浏览次数:13  
标签:... 遍历 ES6 对象 08 索引 数组 var

在JavaScript中,for...infor...of 是两种不同的循环结构,它们分别在不同的ECMAScript版本中被引入,并且具有不同的用途和特性。

for...in 循环(ES5)

for...in 是ECMAScript 5(ES5)中引入的,用于遍历对象的可枚举属性和数组的索引。它提供了一种方式来获取对象的键或数组的索引。

  • 遍历数组:使用 for...in 遍历数组时,循环会提供数组的索引,而不是元素值。这意味着你可以通过索引来访问数组中的元素。
var arr = ['海绵宝贝', '天线把把', '宝宝巴士'];
for (var index in arr) {
    console.log(index); // 输出数组的索引:0, 1, 2
    console.log(arr[index] + '你好'); // 通过索引访问元素并输出
}
  • 遍历对象:使用 for...in 遍历对象时,循环会提供对象的键,你可以通过键来访问对象的值。
var obj = { name: '海绵宝宝', age: 12, gender: '男' };
for (var key in obj) {
    console.log(obj[key]); // 输出对象的值
}

for...of 循环(ES6)

for...of 是ECMAScript 2015(ES6)中引入的,专门用于遍历可迭代对象的元素,如数组、字符串、Map、Set等。它提供了一种更直接的方式来获取元素值。

  • 遍历数组:使用 for...of 遍历数组时,循环直接提供数组的元素值,而不需要使用索引。
var arr = ['海绵宝包', '天线包包', '宝宝巴士'];
for (var value of arr) {
    console.log(value, 'value'); // 直接输出数组的元素
}
  • 遍历对象for...of 不能直接用于遍历对象,因为对象不是可迭代的。尝试这样做会导致错误。
var obj = { name: '海绵宝宝', age: 12, gender: '男' };
for (var value of obj) {
    console.log(value); // 这将报错,因为对象不是可迭代的
}

相同点和不同点

  • 相同点

    • for...infor...of 都可以用于遍历数组,但 for...in 提供索引,for...of 提供元素值。
  • 不同点

    • for...in 可以遍历对象,提供对象的键。
    • for...of 不能遍历对象,只能遍历可迭代对象,如数组。

结论

for...in 是ES5的特性,适用于遍历对象的键和数组的索引。for...of 是ES6的特性,提供了一种更现代和简洁的方式来遍历可迭代对象的元素。在选择使用哪种循环结构时,应根据你的具体需求和数据类型来决定。

标签:...,遍历,ES6,对象,08,索引,数组,var
From: https://blog.csdn.net/gt8011/article/details/140587754

相关文章

  • 04 ES6中对象的简写
    在ES6中,对象字面量的书写方式进行了一些简化,使得对象的创建更加简洁。以下是ES6中对象简写的几种形式:属性值缩写:当对象的属性名和属性值的变量名相同时,可以省略属性值,只写属性名。//ES5constname='Alice';constage=25;constperson={name:name,a......
  • springboot网上商城系统 毕业设计-附源码08789
    摘 要随着互联网趋势的到来,各行各业都在考虑利用互联网将自己推广出去,最好方式就是建立自己的互联网系统,并对其进行维护和管理。在现实运用中,应用软件的工作规则和开发步骤,采用Java技术建设网上商城系统。本设计主要实现集人性化、高效率、便捷等优点于一身的网上商城系......
  • 我正在尝试理解 lambda...为什么当列表已由 lambda 填充时我不能直接打印列表?
    以下是我在学习网站上找到的代码。callables=[]foriin(1,2,3):callables.append(lambdaa=i:a)forfincallables:print(f())为什么我们不能只打印可调用列表print(callables)如果我这样做print(callables)相反,我得到的输出如下:[......
  • 08-if
    一、了解条件语句----假设一个场景:-去网吧上网-去网吧进门想要上网必须做的一件事是什么?(划重点)-为什么要把身份证书给工作人员?-是不是就是为了判断是否成年?-是不是如果成年就可以上网?如果不成年则不允许上网?这里所谓的判断的就是条件语句,即条件成立执行某些代码。......
  • 08发送一个ajax请求
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"content="IE=edge"><metaname="viewport"content="width=......
  • python 复制 excel 保留文档中完全相同的参数(样式、单元格大小和融合、边框...)
    我正在寻找一种在其他文件中复制和excel的方法。我有一个“file_1.xlsx”,但我想要一个不存在的“file_1_copy.xlsx”。副本必须与原始文件完全相同,这意味着单元格大小、它们的融合、单元格中文本的颜色、背景、如果有边框,就好像我用右键单击。我有:importopenpyxlfromope......
  • WEB前端08-综合案例(动态表格)
    使用HTML、CSS和JavaScript创建动态表格在本教程中,我们将创建一个动态表格,允许用户添加行、选择项目,并执行批量操作,如全选或删除选中的行。我们将通过HTML、CSS和JavaScript来实现这一功能。让我们逐步了解每个部分是如何协同工作的。HTML结构我们的HTML文档......
  • 2024年IDEA&IntelliJ系列最新激活码(2088)!
    蛋疼ing,仅供学习使用。K384HW36OB-eyJsaWNlbnNlSWQiOiJLMzg0SFczNk9CIiwibGljZW5zZWVOYW1lIjoibWFvIHplZG9uZyIsImxpY2Vuc2VlVHlwZSI6IlBFUlNPTkFMIiwiYXNzaWduZWVOYW1lIjoiIiwiYXNzaWduZWVFbWFpbCI6IiIsImxpY2Vuc2VSZXN0cmljdGlvbiI6IiIsImNoZWNrQ29uY3VycmVudFVzZSI6ZmFsc2U......
  • SQL Server 2008中的代码安全(七):证书加密
    原文链接:https://blog.csdn.net/downmoon/article/details/6252336证书可以在数据库中加密和解密数据。证书包含密钥对、关于证书拥有者的信息、证书可用的开始和结束过期日期。证书同时包含公钥和密钥,前者用来加密,后者解密。SQLServer可以生成它自己的证书,也可以从外部文件或程......
  • 谷粒商城实战笔记-35-前端基础-ES6-模块化
    文章目录一,什么是模块化二,export1.`export`语法2.批量导出3.默认导出三,import1,import语法2,批量导入一,什么是模块化模块化编程是一种软件设计技术,它将程序分解为独立的、可复用的部分,每个部分负责执行特定的功能。这种设计方法在多种编程语言中都有应用,包括Jav......