the-front-end-knowledge-you-may-not-know
the-front-end-knowledge-you-may-not-know copied to clipboard
try-catch 退出 forEach 循环
try {
[1, 2, 3].forEach(v => {
if (v === 2) {
throw new Error('my err')
}
})
} catch (e) {
if (e.message === 'my err') {
console.log('breaked')
} else {
throw e
}
}
😂
https://softwareengineering.stackexchange.com/questions/189222/are-exceptions-as-control-flow-considered-a-serious-antipattern-if-so-why
这个厉害了
中途退出就不叫forEach了,你想退出用for就好了
@zoffyzhang 还不是为了偷懒,总想优先使用forEach。虽然它不能保证遍历顺序,也不能break
@zoffyzhang
for in 或者 for of 或者 $.each 都支持 break。
every 和 some
[1, 2, 3].some(function(el) {
console.log(el);
return el === 2; // 如果el==2就跳出循环
});
这个技巧还是挺实用的,我经常用reduce做需要对比数组前后项的操作,加上try catch的话可以快速退出
不实用,抛栈运行时成本太高,只有前端敢这么玩儿吧。。