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秒

相关推荐

  • 在上学英语翻译 ,上学用英语咋说

    本文目录 1.上学用英语咋说 2. 3.在学校是at school还是in the school 4.在上学日用英语怎么说 上学用英语咋说 不知道你要表达什么意思。 在上学的路上这个意思那么翻译为: on the way to school(缺省主语和谓语。) 如果是在上课的意思,那么翻译为: is studying now(缺省主语,因为不知道你说是谁在上课。) 在学校是at school还是in the school 你好,同学 在学校,一般都用at school 如:We learn knowledge at school. 翻译:我们在学校学知识。 希望能帮到你,祝更上一层楼O(∩_∩…

    2022年10月01日
    16
  • 幸福美好的英文单词 ,幸福美满用英文怎么说

    本文目录 1.幸福美满用英文怎么说 2.找一个代表平凡而又不平凡的意思网名 3.家庭和睦幸福美满 英文怎么写 4."美好的" 英语单词怎么写 幸福美满用英文怎么说 幸福美满 happy and satisfactory 例句: 他们的婚姻曾经一直幸福美满。 Theirs had been a happy and satisfactory marriage. 其实幸福是一种感觉,是柔风拂面的惬意,是玫瑰盛开时的芬芳,是湖面传来的小曲。体验幸福,要有一颗纯洁的心灵;要有甘于淡泊的胸怀;要有一颗细心观察的心;要有宠辱不惊的风度。幸福在你心中,只要你心存幸福,幸福将伴你一生。 找一个代表平凡而又不平凡…

    2022年09月30日
    16
  • 家庭里面的人物用英语怎么说 ,家里有很多人英语

    本文目录 1.家里有很多人英语 2.家庭成员的英语单词怎么读 3.家庭里的各个人物的名称用英语怎么讲写 4.那个用英语怎么说?翻译句子是什么 家里有很多人英语 问:家里的人的英语(如son) 答:主要有父亲,母亲,叔叔,阿姨,儿子,女儿,爷爷,奶奶,哥哥,姐姐 Father, mother, uncle, aunt, son, daughter, grandfather, grandmother, brother, sister. 家庭成员的英语单词怎么读 家庭成员的英文单词有:guandmother 奶奶、grendfather 爷爷、mother 妈妈、father爸爸、son 儿子、si…

    2022年09月30日
    16
  • 她的生日是英文 ,她的生日两种说法用英语

    本文目录 1. 2.我妈妈的生日在三月用英语怎么说 3. 4.她十岁生日用英语两种说法 我妈妈的生日在三月用英语怎么说 她的生日在三月。 英语是: Her birthday is on March. 生日,birthday。 在3月,on March。 她十岁生日用英语两种说法 her birthday the birthday of her's 选我满意回答吧。偶做任务。谢~ 以上就是关于她的生日是英文 ,她的生日两种说法用英语的全部内容,以及她的生日是英文 的相关内容,希望能够帮到您。…

    2022年09月30日
    16
  • 今年36岁用英语怎么说 ,小学英语翻译

    本文目录 1.小学英语翻译 2."今年″英语怎么说 3.科学用英语怎么说 4.我的爸爸今年37岁了的英文 小学英语翻译 我妈妈已经36岁了,她还去了成人学校读书。她是家庭妇女,每天在家搞卫生,做饭等等。她有一头棕色的头发和蓝色的眼睛。她长的很漂亮,而且她对任何人都很和蔼。妈妈从来不把她自己放到第一位,每当其他人有困难或者生病需要她的帮助时,她总是乐于助人。尽管她要去学校上学,但是不管大卫还是我生病了,她总是要耽误课程来照顾我们。妈妈的另一个特点是关于钱的,妈妈经常给我和大卫买衣服,鞋,但是很少给她自己买,如果不是特别需要的话,她几乎不买新衣服和鞋子。 妈妈是一个伟大的人,我很爱她 "今年″英语…

    2022年10月01日
    16
  • 洗沐浴的英文,洗淋浴的英文

    本文目录 1.洗淋浴的英文 2.你先洗澡英文怎么说 3.4种用英语表达洗澡的方式应该怎么说呢 4.洗澡的英语怎么读 洗淋浴的英文 洗淋浴的英文showers。 例句: 1、洗淋浴吧,别用浴缸了。 Take a shower instead of a bath. 2、至少我入住的客房(属倒数第二等的总理套房)为酒店免费提供,尽管窗帘不太合适,洗淋浴也颇费周折。 And mine at least ( a Premier-the second-least-expensive category), was a treat to stay in, notwithstanding the not-qui…

    2022年10月01日
    16
  • 小学英语否定句专项训练 ,小学英语陈述句改否定句

    本文目录 1.小学英语陈述句改否定句 2.小学六年级英语be动词有哪些 3.小学英语句型转换专项训练(改为否定句) 4.小学英语改否定句及答案 小学英语陈述句改否定句 1Is that my first name? 2 Are you from theU.S.A. 3 Where is she from? 否定句: This isn't my brother,Jim. 小学六年级英语be动词有哪些 1.I'm a teacher Iamn't a teacher 2.I'm a student I'm not a student 3,I'm a dancer I'm not a dancer …

    2022年10月01日
    16
  • 当我经过一处红绿灯时的英文 ,红绿灯的英文是什么意思

    本文目录 1.红绿灯的英文是什么意思 2.我们过马路的时候红灯停绿灯行黄灯等一等我们要先看左边再看右边用英语怎么写 3.红绿灯的英语怎么说怎么写 4.请在红绿灯处穿过马路用英语怎么说怎么写 红绿灯的英文是什么意思 红绿灯英文是traffic light,具体释义如下: 读音:/ ˈtræfɪk laɪt / 表达意思:红绿灯(等于 traffic signals)。 词性:通常在句中作名词,作为主语或宾语。 固定搭配:push button traffic light按钮式交通灯;plastic traffic light塑胶交通灯。 例句 1、We need to turn left at …

    2022年10月01日
    16