JS for...in 和 for...of 的区别?

for...in 和for ...of的区别?

  • 1. 前言
  • 2. for...in
  • 3. for...of
  • 4,区别
  • 5. 总结:

1. 前言

for...infor...of都是JavaScript中遍历数据的方法,让我们来了解一下他们的区别。

2. for…in

for…in是为遍历对象属性而构建的,它以任意顺序遍历一个对象的除Symbol以外的可枚举属性,可用break或者throw跳出

语法:

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

eg:

let obj = {name: '张三',age: 18
}for(let item in obj) {console.log(item)
}
// 输出 name age

在JavaScript中,数组也是对象的一种,所以数组也是可以使用for…in遍历

let arr = ['a', 'b', 'c']for(let item in arr) {console.log(item)
}
// 输出 0 1 2

3. for…of

for...of 语句在可迭代对象上创建一个迭代循环,调用自定义迭代钩子,并为每个不同属性的值执行语句(包括ArrayMapSetStringTypedArrayarguments等等,不包括Object),可用break或者throw跳出。

语法:

for (variable of 可迭代对象) {// 操作语句
}

eg:

let arr = ['a', 'b', 'c']let obj = {name: '张三',age: 18,sex: '男'
}for (let i of arr) {console.log(i)
}
// 输出 a b cfor (let i of obj) {console.log(i)
}
// 报错 obj is not iterable (obj不是可迭代的)

4,区别

无论是for…in还是for…of都是迭代一些东西。它们之间的主要区别在于它们的迭代方式

  • for…in语句以任意顺序迭代对象的可枚举属性
  • for…of语句遍历可迭代对象定义要迭代的数据

下面列出遍历Array时候,for…in和for…of的区别:

let arr = ['a', 'b', 'c']Array.prototype.ufo = '张三'for(let item in arr) {console.log(item)
}
// 输出 0 1 2 ufofor(let item of arr) {console.log(item)
}
// 输出 a b c

上例,通过Array.prototype添加了ufo属性,由于继承和原型链,所以arr也继承了ufo属性,属于可枚举属性,所以for…in会遍历出来,而for…of则不会

5. 总结:

  • 使用 for…in 迭代对象的属性名,适用于对象。
  • 使用 for…of 迭代集合的值,适用于数组、字符串等可迭代对象。
  • 在迭代数组时,通常使用 for…of 而不是 for…in,因为 for…in 可能会迭代到数组的原型链上的属性,而for…of 不会。
  • 在迭代对象属性时,可以使用 hasOwnProperty
    方法来检查属性是否是对象自身的属性,以避免迭代到继承的属性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/79003.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

运维学习之部署Grafana

sudo nohup wget https://dl.grafana.com/oss/release/grafana-10.1.1.linux-amd64.tar.gz &后台下载压缩包,然后按一下回车键。 ps -aux | grep 15358发现有两条记录,就是还在下载中。 ps -aux | grep 15358发现有一条记录,并且tail …

CAS(compare and swa)中的ABA问题及解决

CAS(compare and swap) CAS是(compare and swap)的缩写,字面意思是比较交换。CAS锁通常也是实现乐观锁的一种机制,首先会给它一个期望值,用期望值与老值做比较,如果相等就用新传入的值进行修改。但是CAS通常…

一百七十八、ClickHouse——海豚调度执行ClickHouse的.sql文件

一、目的 由于数仓的ADS层是在ClickHouse中,即把Hive中DWS层的结果数据同步到ClickHouse中,因此需要在ClickHouse中建表,于是需要海豚调度执行ClickHouse的.sql文件 二、实施步骤 (一)第一步,海豚建立Cl…

Python in Visual Studio Code 2023年9月更新

作者:Courtney Webster - Program Manager, Python Extension in Visual Studio Code 排版:Alan Wang 我们很高兴地宣布 Visual Studio Code 的 Python 和 Jupyter 扩展将于 2023 年 9 月发布! 此版本包括以下内容: • 将 Python …

使用 Nginx 实现企业微信域名配置中的校验文件跳转

背景 在企业微信中配置业务域名时,通常需要在该域名的根路径下放置一个校验文件,以验证域名的所有权。然而,如果该域名是第三方的,你可能无法直接在根路径下放置文件。在这种情况下,你可以使用 Nginx 来实现校验文件的…

YOLO-NAS详细教程--如何使用该model.predict()方法进行对象检测任务

在本教程中,我们将演示如何使用该model.predict()方法进行对象检测任务。 本教程使用的模型是YOLO-NAS ,在COCO 数据集上进行预训练,其中包含 80 个对象类别。 警告:如果您在不继承任何 SuperGradients 数据集的数据集上训练模型,则在运行模型之前需要执行一些额外的步骤…

Unity 收取“运行费”引众怒,开源免费3D游戏引擎CGE(Castle Game Engine)吸引开发者关注

特征 1. 总结2. 跨平台3. 可视化编辑器4.视口与场景,相机,导航和其他组件5. 数据格式 5.1. glTF5.2. X3D5.3. 精灵表5.4. 脊柱6. 图形效果7. 图片8. 用户界面组件 8.1. 文本和字体9. 网络10. 优化和分析11. 声音12. 物理13. 平铺集成14. 粒子15. 使用现代…

2023 Google 开发者大会|Mobile开发专题追踪

文章目录 前言大会介绍涉及内容MobileWebAICloud Mobile开发专题多终端应用的开发适配大屏视频流可穿戴设备电视新的设计中心 构建高质量的应用高级相机和媒体功能用户的安全和隐私更精细的视觉体验 小结 前言 哈喽大家好,我是阿Q。近期,【2023 Google …

T检验用历史数据判断实验指标的置信度

用历史list 判断 一个value from scipy import statshistory [0.05, 0, 0, 0.07, 0.01] new_score 0.01result stats.ttest_1samp(history, new_score)print(result)print结果: TtestResult(statistic1.114772822866588, pvalue0.32740571539283314, df4) 用历…

LeetCode-47-全排列Ⅱ

题目描述:给定一个可包含重复数字的序列 nums ,按任意顺序 返回所有不重复的全排列。 题目链接:LeetCode-47-全排列Ⅱ 解题思路:注意题目中给的是包含重复数字,所以需要去重操作; 这道题不需要 startIndex&…

python: excel假期时间提取统计

# encoding: utf-8 # 版权所有 2023 涂聚文有限公司 # 许可信息查看: # 描述: # Author : geovindu,Geovin Du 涂聚文. # IDE : PyCharm 2023.1 python 311 # Datetime : 2023/9/3 7:04 # User : geovindu # Product : PyCharm # Proje…

Redis 数据一致性方案的分析与研究

点击下方关注我,然后右上角点击...“设为星标”,就能第一时间收到更新推送啦~~~ 一般的业务场景都是读多写少的,当客户端的请求太多,对数据库的压力越来越大,引入缓存来降低数据库的压力是必然选择,目前业内…

常用数据库的 API - 开篇

API API 这个词在大多数人看来可能和 CNS 差不多,前者天天听说就是用不上,后者天天读就是发不了。 不过,通过今天的一个简短介绍,今后 API 这个东西你就用上了,因为在文章最后我将会展示一个最最基础且高频的 API 使…

像素、视口、网页计量单位与移动端适配方案

像素的概念 设备像素(物理像素) 指设备能控制显示的最小物理单位,像一个个小点,每一个小像素点都是由三原色RGB组成。物理像素只是为了描述物理分辨率,在屏幕出厂时就已经固定了,单位是pt。【注意区分分辨…

【CSS3】

文章目录 1.简介2.边框3.圆角4.背景5.渐变CSS3 径向渐变6.文本效果7.字体8.2D转换9.3D转换10.过渡11.动画12.多列13.用户界面14.按钮 ​ 1.简介 模块 CSS3 被拆分为"模块"。旧规范已拆分成小块,还增加了新的。 一些最重要 CSS3 模块如下: 选…

时序数据库

时序数据库在许多应用领域中得到广泛应用,包括物联网(IoT)监控、应用性能监控(APM)、日志分析、金融数据分析、工业自动化和能源管理等。一些知名的开源和商业时序数据库包括InfluxDB、Prometheus、OpenTSDB、TimescaleDB和Kdb+等。 上图是一个典型的时序数据示意图,由…

慢查询SQL如何优化

一.什么是慢SQL? 慢SQL指的是Mysql中执行比较慢的SQL,排查慢SQL最常用的方法是通过慢查询日志来查找慢SQL。Mysql的慢查询日志是Mysql提供的一种日志记录,它用来记录Mysql中响应时间超过long_query_time值的sql,long_query_time的默认时间为10s. 二.查看慢SQL是否…

网络原理(一)网络基础,包括IP ,网络相关的定义

网络基础,包括IP ,网络相关的定义 网络基础冲突域广播域DNSNATNAPT 网络基础 以下图片是书上的网图。 什么是IP地址? IP地址(Internet Protocol Address)是指互联网协议地址,又译为网际协议地址。P地址是…

PHP自己的框架2.0设置常量并绑定容器(重构篇三)

目录 1、设置常量并绑定容器 2、容器增加设置当前容器的实例和绑定一个类实例当容器 3、将常量绑定到容器中 4、运行效果 1、设置常量并绑定容器 2、容器增加设置当前容器的实例和绑定一个类实例当容器 //设置当前容器的实例public static function setInstance($instance){…

SW的stp文件转成CAD格式文件学习笔记

SW的stp文件转成CAD格式文件 文章目录 SW的stp文件转成CAD格式文件另存为part文件(零件图)另存为CAD文件 另存为part文件(零件图) 如图一个STP文件,右上角标注是什么文件呢 另存为零件图,即另存为part …