难度级别:中高级及以上 提问概率:65%
forEach与原始for循环不同的是,并不能通过简单的break或是return中断循环,意思就是不管需要循环的数组有多长,一旦使用了,就会将数组所有元素循环一遍才会结束。其实回答这道题,就要想到forEach的使用场景了,如果是不需要中断的循环场景,使用forEach并没有问题,但如果需求中明显带有需要中断的情况,更建议使用原始for循环,或者every、some等方法代替。
但面试恐怕与日常开发不同,有时候面试官就是这样不讲理,既然用forEach,又要强制中断,该如何做呢?看下面的代码
Javascript代码:
<script>
let weekArr = ['星期一', '星期二', '星期三', '星期四'];
try {
weekArr.forEach((item) => {
if (item === '星期二') {
throw('星期一停止循环');
}
console.log('查看是否继续循环了::', item)
})
} catch(e) {
console.log('查看抛出的异常:: ', e)
}
</script>
刷题思考
这道题属于一种偏门类题目,因为日常开发中如果使用forEach只是单纯的循环一些简单数组的话,是不涉及到中断问题的。但如果循环过程中涉及到一些复杂数据,或者需要做一些异步操作的时候,那么中断就很有必要了。所以求职者在准备这道题的时候,除了问题本身的作答,还要思考其使用场景,自己当时解决问题的过程等,这样才能够把问题回答的更有灵魂。
类似考点
这道题虽然考察的是forEach中断,但不难看出,题目中也涉及到了forEach与for循环的区别,所以类似的考点还有,例如请你说一下for、forEach、for…of、map之间的区别是什么?例如请你说一下for和forEach哪个性能更高?为什么?