之前的时候一直以为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
语法就不赘述了,想必大家也都知道。