js的forEach中的前端returnn只会跳过单次循环吗

在项目开发过程中有的时候我們可能需要跳出我们的循环。本人就趟坑经历总结一下趟坑心得

我们常用到的遍历主要有以下几种

结果为:0 1 说明跳出了循环

缺点:这种寫法比较麻烦

结果直接报错, 因为js里没有break关键字但是有的人说将break改为前端returnn false就可以,然并卵……它只是用来终止本次执行,而不是终止循环所以我们可以得出结论forEach无法在所有元素在传递给调用函数之前终止遍历。

结果为:1说明跳出了循环,但是for in更多的用来遍历对象

難道我们拿forEach没有办法了吗?探索ing

发现我们可以将forEach()放在一个try块中并能抛出一个异常。如果forEach()调用的函数抛出foreach.break异常循环会提前终止:

结果是1,说明跳出forEach循环

for…of是ES6新增的遍历方式,它提供了统一的遍历机制所有实现了[Symbol.iterator]接口的对象都可以被遍历。for...of循环可以使用的范围包括數组、Set 和 Map 结构、某些类似数组的对象(比如arguments对象、DOM NodeList 对象)、Generator 对象以及字符串

  1. 有着同for...in一样的简洁语法,但是没有for...in那些缺点
  2. 提供了遍历所有數据结构的统一操作接口

下面是一个使用break语句跳出for...of循环的例子

上面的例子,会输出斐波纳契数列小于等于1000的项如果当前项大于1000,就会使用break语句跳出for...of循环

  1. entries() 返回一个遍历器对象,用来遍历[键名, 键值]组成的数组对于数组,键名就是索引值;对于 Set键名与键值相同。Map 结构的 Iterator 接口默认就是调用entries方法。
  2. keys() 返回一个遍历器对象用来遍历所有的键名。
  3. values() 返回一个遍历器对象用来遍历所有的键值。

类似数组的对象包括好几类下面是for...of循环用于字符串、DOM NodeList 对象、arguments对象的例子。

并不是所有类似数组的对象都具有 Iterator 接口一个简便的解决方法,就是使用Array.from方法将其转为数组 

对于普通的对象,for...of结构不能直接使用会报错,必须部署了 Iterator 接口后才能使用

解决方法是,使用Object.keys方法将对象的键名生成一个數组然后遍历这个数组。

包含2020美赛所有题目的所有O奖论文A题8篇,B题5篇C题6篇,D题7篇E题5篇,F题6篇

可使用前端returnn语句跳出本次循环執行下一次循环


    

forEach无法通过正常流程(如break)终止循环,但可通过抛出异常的方式实现终止循环


  

我要回帖

更多关于 前端return 的文章

 

随机推荐