forin和foreach的区别与联系 ,for for in for of foreach区别

本文目录

for for in for of foreach区别


优点: 遍历的时候更加简洁,效率和for循环相同,不用关心集合下标的问题,减少出错的效率
缺点: 不能同时遍历多个集合,在遍历的时候无法修改和删除集合数据,方法不能使用break,continue语句跳出循环,或者使用return从函数体返回,对于空数组不会执行回调函数

forEach不可遍历对象,这也是和for in的区别

优点: 可以遍历数组的键名,遍历对象简洁方便
缺点: 某些情况下,会出现随机顺序的遍历,因为里面的值是string类型,所以增加了转换过程,因此开销比较大

优点: 避免了for in的所有缺点,可以使用break,continue和return,不仅支持数组的遍历,还可以遍历类似数组的对象,支持字符串的遍历,最直接的遍历数组的语法,支持map和set对象遍历
缺点: 不适用于处理原有的原生对象

优点: 程序简洁,结构清晰,循环初始化,循环变量化,循环体和循环条件位置突出
缺点: 结构比while循环复杂,容易出编码错误

forin和foreach的区别与联系
,for for in for of foreach区别图1

for循环和for in循环的区别


for … in循环由于历史遗留问题,它遍历的实际上是对象的属性名称。一个Array数组实际上也是一个对象,它的每个元素的索引被视为一个属性。

当我们手动给Array对象添加了额外的属性后,for … in循环将带来意想不到的意外效果:

而for循环去识别不了

for … in循环将把name包括在内,但Array的length属性却不包括在内。

for … of循环则完全修复了这些问题,它只循环集合本身的元素:

这就是为什么要引入新的for … of循环。

然而,更好的方式是直接使用iterable内置的forEach方法,它接收一个函数,每次迭代就自动回调该函数。以Array为例:

注意,forEach()方法是ES5.1标准引入的,你需要测试浏览器是否支持。

for循环可一遍历数组,而for in循环可以遍历数组和对象
使用for in循环会将Array当成对象遍历,而Array的存取速度明显比Object要快。所以使用for循环遍历数组比for in循环遍历快。
for循环遍历的是索引数组,通过索引来调用,i的返回值是number类型
而for in循环遍历的是关联数组,通过key来调用,i的返回值是string类型

这两者的具体用途 得看你用他的环境是什么.不能一概而论.
索引数组:仅仅用于存储数据. 优势在于迭代方便
关联数组:用于存放对应的数据格式, 优势在于 可以很方便 特定key对应的value 缺点:迭代麻烦

forin和foreach的区别与联系
,for for in for of foreach区别图2

for循环和for in循环的区别


for循环就是我们常用的方法用来遍历。for in一般是用来遍历对象的,for 循环可以遍历一个数组,而for in遍历对象,对象有多个属性,各个属性又有各自 的值。在上面的案例里面,想要获取对象的属性相应的值for是遍历不了的,这个时候for in就出场了。
上面的案例中,对象wq里有三个属性和相对应的值,想要获取到这三个属性及相对应的值for是办不到的,只有for in才可以,所以说,for in一般都是用在遍历对象的,另外,for in也可以遍历数组,但是会存在以下几个问题。

1、 for in这种循环i是string类型的,不能直接进行几何运算
2、遍历顺序有可能不是按照实际数组的内部顺序
3、使用for in会遍历数组所有的属性,包括原型。例如上例的原型方法method和name属性
4、简而言之,for-in是为普通对象设计的,你可以遍历得到字符串类型的键,因此不适用于数组遍历。

所以说for in也有他的局限性,因此遍历一般的数组用for比较好,遍历对象就需要for in了


forin和foreach的区别与联系
,for for in for of foreach区别图3

for和forEach的区别


for和foreach有本质的区别
foreach的具体过程是由目标对象控制的
所以并非集合内容更改了就不可以使用foreach
而是Array和Collection对象如此实现了它而已
你却可以完全按照自己的想法去实现这一过程
也许你可以去翻一下Gof的Visitor模式,foreach看起来就是它的简化版本
我们应该把foreach当作一种设计模式而不是简单的一个循环语句去理解
目前C#里的foreach是以IEnumerable的方式去实现,这只是保留COM的实现方式,这种方式我认为其实不太便于理解
我想如果存在一个IForEachable其成员为ForEach(..),这样可能更能让人容易明白

forin和foreach的区别与联系
,for for in for of foreach区别图4

以上就是关于forin和foreach的区别与联系 ,for for in for of foreach区别的全部内容,以及forin和foreach的区别与联系 的相关内容,希望能够帮到您。

上一篇 2022年11月25日15时53分37秒
下一篇 2022年11月25日15时57分35秒

相关推荐

  • 谓语从句例子

    谓语从句是英语语法中的一种重要句型,它能够让我们表达更加复杂的语义和更加精准的意思。下面是一些谓语从句的例子,帮助你更好地理解和使用这种语法结构。 I believe that he is telling the truth. 我相信他在说真话。 She doesn't know where he went. 她不知道他去哪里了。 He said that he would come to the…

    英语知识 2023年06月08日
    11
  • 什么是助动词和情态动词

    助动词和情态动词是英语语法中非常重要的两类词汇。它们通常用于帮助构建句子的语法结构和表达一些特定的含义。 助动词 助动词是指用来帮助主要动词表达时态、语态、否定和疑问等意义的一类动词。常见的助动词有be, do, have等。比如,"I am reading a book" 中的am就是一个助动词,用来表达现在进行时态。又如,"She has gone to school" 中的has就是一个助动…

    英语知识 2023年06月08日
    11
  • 过去进行时的肯定回答和否定回答

    过去进行时是英语中的一种时态,它用来描述在过去某个时间正在进行的动作。当我们需要回答有关过去进行时的问句时,我们需要使用肯定回答或否定回答。以下是一些例子: 肯定回答 你在干什么? 我在看电视。 (What were you doing? I was watching TV.) 他们在做什么? 他们在打扫房间。 (What were they doing? They were cleaning t…

    英语知识 2023年06月08日
    11
  • 哪里有常用口语英语

    本文目录 1.网络资源 2.电影、电视剧 3.英语口语社交平台 4.英语角、英语沙龙 学习英语口语是提高英语综合能力的重要一环。不过,很多人在学习英语口语时会遇到一些困难,比如不知道该学习哪些常用口语。下面是一些常用口语英语的学习指南,帮助你快速提高口语水平。 网络资源 现在有很多英语学习网站,提供了免费的英语口语学习资源。比如英语流利说、英语趣配音等应用,都可以提供你不同的口语练习环境,让你更好…

    英语知识 2023年06月08日
    11
  • 定语从句能当主语从句吗

    在英语语法中,定语从句和主语从句是两种不同的语法结构,它们在句子中所起的作用也不同。但是,有时候我们会犯迷糊,不知道该用哪一种从句。那么问题来了:定语从句能当主语从句吗? 首先,我们需要了解定语从句和主语从句各自的定义和作用。定语从句通常用来修饰一个名词或代词,用来描述这个名词或代词的特征或性质,例如: The book that I borrowed from the library is ve…

    英语知识 2023年06月08日
    11
  • 过去进行时否定句结构

    过去进行时是英语语法中的一个时态,用于描述过去某个时刻正在进行的动作。构造过去进行时的肯定句很简单,只需要在"be"动词后面加上"-ing",然后再加上主语即可。但是,当我们需要表达否定的过去进行时时,该怎样构造句子呢? 过去进行时的否定句结构如下: 主语 + was/were + not + 动词-ing 例如: 我们昨天晚上七点正在看电影。 肯定句:我们昨天晚上七点正在看电影。 否定句:我们昨…

    英语知识 2023年06月08日
    11
  • 从句的关系代词和关系副词

    在学习英语语法时,从句是一个非常重要的概念。从句是指在一个句子中,可以独立成立的一个完整的句子。在从句中,关系代词和关系副词是连接主句和从句的重要工具。 关系代词 关系代词用于代替先行词,并连接主句和从句。在从句中,关系代词充当主语、宾语或定语。常见的关系代词有:who, whom, whose, which, that。 Who: 指人,作主语或宾语。 Whom: 指人,作宾语。 Whose: …

    英语知识 2023年06月08日
    11
  • 在什么情况下加动词不定式

    本文目录 1. 作为宾语补足语 2. 作为主语 3. 作为形容词或副词的补足语 动词不定式是英语语法中的一个重要概念,它可以用来表示一种行为或状态。但是在英语中,不是所有情况下都需要加上动词不定式,接下来我们将详细介绍在什么情况下需要加动词不定式。 1. 作为宾语补足语 在英语中,有些动词后需要加上宾语补足语才能完整地表达意思,而这个宾语补足语通常就是一个动词不定式。例如: He wants to…

    英语知识 2023年06月08日
    11