首页 > 其他分享 >for...in循环和for...of循环的区别?

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

时间:2023-07-17 15:02:19浏览次数:29  
标签:... 遍历 区别 对象 循环 数组 属性

大原則: for...in只用來遍歷對象中的key, 不用來遍歷數組

 

for…of 是ES6新增的遍历方式,允许遍历一个含有iterator接口的数据结构(数组、对象等)并且返回各项的值,和ES3中的for…in的区别如下:

for…of 遍历获取的是对象的键值,for…in 获取的是对象的键名;
for… in 会遍历对象的整个原型链,性能非常差不推荐使用,而 for … of 只遍历当前对象不会遍历原型链;
对于数组的遍历,for…in 会返回数组中所有可枚举的属性(包括原型链上可枚举的属性),for…of 只返回数组的下标对应的属性值;
for in遍历数组

1.index索引为字符串型数字,不能直接进行几何运算
2.遍历顺序有可能不是按照实际数组的内部顺序
3.使用for in会遍历数组所有的可枚举属性,包括原型。例如上栗的原型方法method和name属性
所以for in更适合遍历对象,不要使用for in遍历数组。

总结
for...in 循环主要是为了遍历对象而生,不适用于遍历数组;

for...of 循环可以用来遍历数组、类数组对象,字符串、Set、Map 以及 Generator 对象。

但是不能遍历对象,因为没有迭代器对象.与forEach()不同的是,它可以正确响应break、continue和return语句。for-of循环不支持普通对象,但如果你想迭代一个对象的属性,你可以用for-in循环(这也是它的本职工作)或内建的Object.keys()方法
————————————————
版权声明:本文为CSDN博主「Sink_web」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/adminmijinlin/article/details/128560437

标签:...,遍历,区别,对象,循环,数组,属性
From: https://www.cnblogs.com/longxingzhe/p/17560122.html

相关文章

  • springboot相较之前ssm有什么区别和优势
    1、快速可搭建的脚手架,少量配置,约定优于配置,不用像ssm那样增加复杂的配置文件2、这种方式使程序员更加集中于业务代码的编写,而不用关注部署和容器配置的问题3、约定优于配置也不是任何场景都适用,主要还是免去了servlet的配置4、内置tomcat直接启动......
  • python学习_循环结构(while循环和for循环)
    一、什么叫循环结构?反复做同一件事情的情况,就要循环python中的循环结构主要有两种:1)while2)for-in 二、while循环只要条件成立,其包含的某条语句或某个语句块就会一直被执行,while循环与if语句的区别就是if语句是判断一次,条件为True就执行一次执行体,while循环是判断N+1次,条件......
  • BST(二叉搜索树)、AVL(平衡二叉树)、RBT(红黑树)的区别
    一、二叉搜索树(BST:BinarySortTree)二叉查找树就是左结点小于根节点,右结点大于根节点的一种排序树,也叫二叉搜索树。二叉查找树比普通树查找更快,查找、插入、删除的时间复杂度为O(logN)。但是二叉查找树有一种极端的情况,就是会变成一种线性链表似的结构。此时时间复......
  • DM8达梦数据库版本区别:开发版、标准版、企业版、安全版
    DM8达梦数据库版本区别:开发版、标准版、企业版、安全版达梦2021-01-196435根据不同的应用需求与配置,DM提供了多种不同的产品系列:DM开发版DM开发版是指用于业务场景开发时所用的数据库,除不支持数据库集群等企业级功能,开发版提供了完整的功能,支持TB级数据量,支......
  • ffmpeg # 画中画中的视频进行循环
    ffmpeg-ibunny.mp4-vf"movie=test.mov[logo];[0:v][logo]overlay=x=100:y=100"-yout.mp4以上命令test.mov,只显示1遍,后边重复显示最后一帧。如果想让test.mov一直循环呢?添加:loop=0,setpts=N/FRAME_RATE/TB即可。ffmpeg-ibunny.mp4-vf"movie=test.mov:loop=0,se......
  • awk高级应用(条件控制语句,循环语句)
    awk判断根分区磁盘使用量:::df/|grep/|awk'{if($4<15000000)print"根分区磁盘可用量低于15G了";elseprint"磁盘可用量还行"}'awk判断/boot分区磁盘使用量:::[root@localhost~]#df|grep/boot|awk'{if($4<140000)print"false";elseprint"......
  • 什么是进程和线程? 为什么要引入线程? 进程和线程的区别?
    什么是进程和线程?为什么要引入线程?进程和线程的区别? 什么是进程和线程?什么是进程?进程是程序在某个数据集合上的一次运行活动(不仅包含正在运行的程序实体,并且包括这个运行的程序中占据的所有系统资源,比如说CPU、内存、网络资源等),也是操作系统进行资源分配和保护的基......
  • vector 容器的容量(capacity)和大小(size)之间的区别
    vector容器的容量(用capacity表示),指的是在不分配更多内存的情况下,也就是事先分配好内存大小,如果不超出容量即便有新的元素加入也不会分配内存空间;容器可以保存的最多元素个数;而vector容器的大小(用size表示),指的是它实际所包含的元素个数。对于一个vector对象来说,通过该......
  • execute和executeUpdata的区别
    一、比较execute、executeUpdate的区别1.相同点:        execute与executeUpdate的相同点:都可以执行增加,删除,修改2.不同点    不同1:        execute可以执行查询语句,然后通过getResultSet,把结果集取出来。        executeUpdate不能执行查询语句。......
  • Java性能优化-测试try-catch放在循环内和外的性能对比与业务区别
    场景Java中使用JMH(JavaMicrobenchmarkHarness微基准测试框架)进行性能测试和优化:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/131723751使用如上方式测试Java中try-catch放在循环内和循环外是否有性能上的差别。注:博客:https://blog.csdn.net/badao_lium......