1、为什么map和forEach自身不能跳出循环
1)前提
- 对一个函数而言,可以通过return结束当前函数执行的流程,只是结束当前函数。
- map的第一个参数一定是一个函数,这个函数规定了你对传入的数组的每一个item做的操作,执行完一个item后,执行下一个,直到把数组的所有item都执行完,对于每一个item都是执行你传入的函数。
let a=[1,2,3,4,5,6]
a.map((item,index,arrA)=>{})
- 所以通过以上两点,可以知道,即使通过return结束了对item1的函数执行,之后的对item2的函数也会继续执行。
- 参考:
![在这里插入图片描述](https://img-blog.csdnimg.cn/05033dd9f61e4d8183326e9a71516a89.png)
- 上面写着会判断callback是否为一个函数当callback不是一个函数的时候会抛出一个错误。所以map的第一个参数一定需要是一个函数。
2)如何强制跳出map的循环
- map和forEach其实可以跳出循环,只不过不是通过自己本身来实现的,而是抛出 new throw error() 通过try catch去捕获这个错误才可以终止循环。例:
let list=[1,2,3,4,5,6];
try{
list.map(item=>{
if(item===3){
throw new Error()
}
console.log(item)
})
} catch {}
2、for循环里return和break的区别
1)return和break的应用场景
- return只能在for循环外有一层作用域(通常是函数)的时候才能用,因为for循环自己是没有作用域的。
- break外边有没有函数都可以,break只是针对该循环本身而言
2)return和break的使用区别(外层都有函数作用域)
return 返回所有的for循环内部结构
break 只跳出当前的for循环