JS for与foreach的区别

本文比较了JavaScript中的for循环与forEach函数,讨论了它们在性能、控制结构和遍历可迭代对象的区别,以及迭代器和迭代的概念,强调了ES6中iterable和Iterator的使用。
摘要由CSDN通过智能技术生成

1.for语法循环最简单,它没有任何额外的函数调用和上下文;


2.forEach函数签名更为复杂
array.forEach(function(currentValue, index, arr), thisValue),有诸多参数和上下文在执行时需考虑,性能可能减弱;

3.for循环使用break跳出整个循环,forEach不行只能用throw catch中断;
   for循环可控制循环起点i,forEach只能默认从0开始;
   for循环可在循环中修改i,forEach不行(底层隐式控制index 自增,无法操作)。

跳出for循环的三种方法?

1.return:是跳出for循环,且不执行for循环之外的语句,直接跳出当前函数,返回return后的值;

2.continue:是跳出当前循环,即不执行continue后的语句,直接进入下次循环;

3.break:是跳出for循环本身,不再进行之后的循环,但可以执行for循环之外的语句。

那么遍历,迭代,可迭代对象分别是什么呢?

遍历:指的对数据结构的每一个成员进行有规律的且为一次访问的行为。
迭代:迭代是递归的一种特殊形式,是迭代器提供的一种方法,默认情况下是按照一定顺序逐个访问数据结构成员。迭代也是一种遍历行为。

可迭代对象:ES6中引入了 iterable 类型,Array Set Map String arguments NodeList 都属于 iterable,他们特点就是都拥有 [Symbol.iterator] 方法,包含他的对象被认为是可迭代的 iterable。

forEach 其实是一个迭代器,他与 for 循环本质上的区别是 forEach 是负责遍历(Array Set Map)可迭代对象的,而 for 循环是一种循环机制,只是能通过它遍历出数组。

什么是迭代器?迭代器(Iterator)是一种遍历任何可迭代对象(Iterable)的通用接口。迭代器是ES6规范中引入的一种新的数据类型,用于遍历各种数据结构,包括数组、对象、Map、Set等。在语言层面上,迭代器可以被看做一个有next方法的对象,每次调用next方法都可以返回一个值对象(Value)和一个布尔值(Done),表示是否遍历结束。其中,Value代表当前迭代项的取值,Done代表迭代是否结束。

遍历和迭代的区别?

简单的说:
遍历:就是走一遍
迭代:走n遍,反反复复
专业的说:
迭代就是重复运行一段代码语句块,分为两种方式
1.使用递归函数
2.使用循环(for 或 while 循环)

  • 6
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值