因为自己比较大只,容易忘记,仅此用来记录一下~
各种循环中使用return或者退出循环的机制。
1、forEach 使用 return 可以退出循环吗?下面代码打印啥?
const list = [1, 2, 3, 4, 5]list.forEach(e => {if (e === 3) {return}console.log(e, 'each-end')})
答案是:
通过上面的例可以看出,forEach里面return ,只能退出当前forEach回调,无法退出循环。那可能有的小伙伴就会说了,用break呢,现在请记住,forEach里面如果使用 break 则会报错。
那如何是for循环呢?看看下面的列子会运行出什么结果?
运行结果:
由此可见 for 循环里面加 return 是退出函数,如果将 return 换成break,因为break是跳出循环,所以函数内的其他代码还是会执行。
但是值得注意的是,for循环里面加return必须写在函数里面,不然会报错,假设不写在函数里面,那return到哪里去呢,很明显是有问题。
上面代码 return 换成 break 的结果打印:
那如果一定要在forEach中退出循环呢?别急,也是有办法的。
可以用try...catch实现。
当然,像用some,find,every去代替foreach 退出循环不失为一种更好的方法。
some只要有一项为true,就会跳出循环。
every 只有每一项都返回true,函数返回true ,所以只要有一项不是true就会退出循环。
find 只要找到目标值,就会跳出循环。