for和forEach的区别——一个小知识点

这是我参与11月更文挑战的第6天,活动详情查看:2021最后一次更文挑战

for和forEach的区别——一个小知识点-----下面这些,你了解么?

foreach可以说是我们最常用的属性之一了,但是今天遇到一些问题,发现其实对于这个的了解还是不足够,现在做一些关于for和forEach的区别的总结.

之前的时候一直以为for和forEach的区别主要体现在语法和性能上,但是今天的时候突然发现return、break都无法结束foreach的循环。

一、跳出循环

1.foreach使用break时直接就会报错,如下:

在这里插入图片描述

2.foreach使用return 只是中止本次继续执行,而不是终止循环,有点像for循环里面的continue,然后forEach 里面的return是没有返回值的效果的

所以foreach跳出循环的方式为:

 throw new Error("End");

这样的话可以解决跳出循环的问题,但是这个时候控制台将会产生一个报错,可以写上try catch。

二、性能

在性能上面

let arrs = new Array(100000);

console.time('for');
for (let i = 0; i < arrs.length; i++) {

};
console.timeEnd('for');

console.time('forEach');
	
arrs.forEach((arr) => {
 
});
console.timeEnd('forEach');

for: 2.263ms
forEach: 0.254ms

在10万这个级别下, forEach 的性能是 for的十倍

for: 2.263ms
forEach: 0.254ms

在100万这个量级下, forEach 的性能是和for的一致

for: 2.844ms
forEach: 2.652ms

在1000万级以上的量级上 , forEach 的性能远远低于for的性能

for: 8.422ms
forEach: 30.328m

经过实际的试验,在不同的电脑上面,量级的划分是有区别的,但是大致的分级走向是上述这样的,在数据量小的时候,forEach的性能会更好,在本人机器上面, 大概三万以下forEach更好,大于三万数据量的时候就不分胜负.

语法就不赘述了,想必大家也都知道。

猜你喜欢

转载自juejin.im/post/7027384996960665614