这是我参与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更好,大于三万数据量的时候就不分胜负.
语法就不赘述了,想必大家也都知道。