前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >for of和for in的区别

for of和for in的区别

作者头像
OECOM
发布于 2020-07-01 09:24:35
发布于 2020-07-01 09:24:35
1.3K00
代码可运行
举报
文章被收录于专栏:OECOMOECOM
运行总次数:0
代码可运行

2017-10-16 03:54:43

这两种方式都是用来进行遍历操作的,但是他们之间还是有一些区别的。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var array1 = [1,2,3];
array1.name = "xiaoyu";
for (var i in array1){
  console.log(i);      //依次输出1  2  3  name
}
console.log(array1.length); //输出3   这是原数组的长度


var array2 = [1,2,3];
array2.name = "xiaoyu";
for (var item of array2){
  console.log(item);     //输出1   2   3    没有输出name  
}
alert(array2.length); //输出3

使用for in 可以遍历数组,但是会存在以下问题:

1.index索引为字符串型数字,不能直接进行几何运算

2.遍历顺序有可能不是按照实际数组的内部顺序

3.使用for in会遍历数组所有的可枚举属性,包括原型。例如上例的name属性

所以for in更适合遍历对象,不要使用for in遍历数组。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var myObject={
  a:1,
  b:2,
  c:3
}
for (var key in myObject) {
  console.log(key+":"+myObject[key]);//输出a:1 b:2 c:3
}

两个遍历方式的最终区别就在于:for in遍历的是数组的索引(即键名),而for of遍历的是数组元素值。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-10-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Java 11 正式发布,这 8 个逆天新特性教你写出更牛逼的代码
美国时间 09 月 25 日,Oralce 正式发布了 Java 11,这是据 Java 8 以后支持的首个长期版本。
用户5224393
2019/08/13
3820
Java 11 正式发布,这 8 个逆天新特性教你写出更牛逼的代码
使用Java 10的var类型推断的几个注意点!
不加选择地应用var可能会让代码不容易理解,因为模糊了类型这个概念,而人类是依据类型分类进行逻辑思考的,这样就使事情变得更糟,如果使用得当,var可以帮助改进良好的代码,使其更短更清晰,同时不会影响可理解性。
本人秃顶程序员
2019/05/16
1.3K0
使用Java 10的var类型推断的几个注意点!
35. Groovy 语法 类型知识详解-第二篇 类型推断
接着上篇介绍的类型相关的知识内容,继续了解Groovy中关于类型Typing的相关知识内容。
zinyan.com
2023/02/23
6240
35. Groovy 语法 类型知识详解-第二篇 类型推断
Java 11新特性
Java 11,作为长期支持(LTS)版本,自2018年发布以来,已经成为许多企业的首选。它不仅提供了稳定性,还引入了一系列令人兴奋的新特性。在这篇文章中,我们将深入探讨Java 11的几大亮点,并提供相应的代码示例。让我们一起来探索这些新特性如何改变我们的编程实践,并在文章末尾留下你的点赞和评论,分享你的看法!
疯狂的KK
2024/03/05
8410
Java 11新特性
【小家java】java10新特性(简述十大新特性) 小步迭代
需要注意的是,本次Java10并不是Oracle的官方LTS版本,所以咱们可以先了解新特性。然后坐等java11的发布再考虑在生产中使用吧
YourBatman
2019/09/03
9380
Java 10 新特性解读
开发者经常抱怨Java中引用代码的程度。局部变量的显示类型声明,常常被认为 是不必须的,给一个好听的名字经常可以很清楚的表达出下面应该怎样继续。
一个风轻云淡
2023/10/15
2020
Java 10 新特性解读
面试题:Java中this和super关键字的底层实现原理
今天,我们就一起来讨论一个这个网友遇到的面试题,Java 中 this 和 super 关键字的底层实现原理!
业余草
2020/06/16
1.1K0
面试题:Java中this和super关键字的底层实现原理
JAVA9-17特性梳理
增加方法takeWhile dropWhile ofNullable iterate
路过君
2022/04/13
1980
Java Lambda表达式
Java Lambda表达式是Java8中的新特性。Java lambda表达式是Java进入函数式编程的第一步。因此,Java lambda表达式是可以单独创建的函数,而无需属于任何类。Java lambda 表达式可以像对象一样传递并按需执行。
三分恶
2020/07/20
1.2K0
JDK10新特性
G1 是设计来作为一种低延时的垃圾回收器。G1收集器还可以进行非常精确地对停顿进行控制。从JDK7开始启用G1 垃圾回收器,在JDK9中G1成为默认垃圾回收策略。截止到ava 9,G1的Full GC采用的是单线程算法。也就是说G1在 发生Full GC时会严重影响性能。
大忽悠爱学习
2022/06/01
3280
JDK10新特性
Java 11正式发布,这几个逆天新特性教你写出更牛逼的代码
就在前段时间,Oracle 官方宣布 Java 11 (18.9 LTS) 正式发布,可在生产环境中使用! 这无疑对我们来说是一大好的消息。作为一名java开发者来说,虽然又要去学习和了解java11,但内心还是欣慰的。我想至少你和我一样的心情:Java在手,天下我有!
格姗知识圈
2019/07/19
5510
Java 11正式发布,这几个逆天新特性教你写出更牛逼的代码
JDK8-JDK17中的新特性(var类型推断、模式匹配、Record、密封类)
新的语法结构,勾勒出了 Java 语法进化的一个趋势,将开发者从复杂、繁琐的低层次抽象中逐渐解放出来,以更高层次、更优雅的抽象,既降低代码量,又避免意外编程错误的出现,进而提高代码质量和开发效率。
鱼找水需要时间
2023/06/01
3.2K0
JDK8-JDK17中的新特性(var类型推断、模式匹配、Record、密封类)
《Kotlin 程序设计》第四章 Kotlin 语法基础
Kotlin 可以省略变量定义的类型声明,但是在定义参数列表和定义返回值类型时则必须明确指定类型(这个类型推断Kotlin居然没做,这地方用起来比Scala,Groovy要繁琐点)。
一个会写诗的程序员
2018/08/17
1.5K0
翻译 – Java局部变量类型推断的代码风格规范
原作者:Stuart W. Marks/2018-03-22 原文链接:http://openjdk.java.net/projects/amber/LVTIstyle.html
KAAAsS
2022/01/14
4970
Java中的类型推断和lambda表达式
java是强类型的编程语言,每个java中使用到的变量都需要定义它的类型,否则会编译失败。强类型语言的好处就是可以尽可能的在编译期间就发现代码中可能出现的问题,从而减少在运行时出现问题的可能性。
程序那些事
2020/07/08
1.1K0
Java 11 正式发布,这 8 个逆天新特性教你写出更牛逼的代码
美国时间 09 月 25 日,Oralce 正式发布了 Java 11,这是据 Java 8 以后支持的首个长期版本。
JAVA高级架构开发
2018/09/27
5230
Java 11 正式发布,这 8 个逆天新特性教你写出更牛逼的代码
不能用 + 拼接字符串? 这次我要吊打面试官!
好久没维护《吊打面试官》系列了,今天再来一篇,这次真的要吊打了,哈哈!(看往期吊打系列请在后台回复:吊打,我会陆续更新……)
Java技术栈
2019/12/23
7010
不能用 + 拼接字符串? 这次我要吊打面试官!
JDK10改变你对Java的原有认知
我们昨天说了关于 JDK9 的相关内容,但是 JDK9 相对于 JDK8 来说,没有做出太大的改变,但是从 JDK11 之后,我们就可以看出,JDK 的变更迭代是确确实实的有点厉害了,更别说现在 JDK 都已经更新到20了,但是该学习的还是得学习呀,今天我们就来讲讲这个关于 JDK10 中发生了哪些变化,我们应该怎么使用。
Java极客技术
2023/09/14
1670
JDK10改变你对Java的原有认知
Java 8 - 04 类型检查、类型推断以及限制
当我们第一次提到Lambda表达式时,说它可以为函数式接口生成一个实例。然而,Lambda 表达式本身并不包含它在实现哪个函数式接口的信息。为了全面了解Lambda表达式,women 应该知道Lambda的实际类型是什么 .
小小工匠
2021/08/17
8890
JDK10的新特性:本地变量类型var
java以面向对象的特性显著于世并得到了蓬勃的发展。在语言的发展过程中,为了让java语言更加简洁和方便使用,JDK也在不断的进行改进。
程序那些事
2020/07/08
3970
推荐阅读
相关推荐
Java 11 正式发布,这 8 个逆天新特性教你写出更牛逼的代码
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文