通常情况下,退出循环通过两个关键字:return 和 break,但是具体使用场景是什么呢?有没有一些不能用这两种方法呢?因此,作出如下总结。

(1)退出 if

return

if(a > 3) {
    return;  // return false
}

(2)退出 for

break

var a = [1, 2, 3, 4, 5, 6]
for(var i = 0; i < a.length; i++) {
    console.log('index: ', i, ' item: ', a[i]);
    if(i == 4) {
        break;
    }
}
/*
index:  0  item:  1
index:  1  item:  2
index:  2  item:  3
index:  3  item:  4
index:  4  item:  5
*/

(3)退出 forEach

try ... catch 异常捕获处理


会发现,在 forEach 循环中使用如(1)中所示的 return,无效,并没有起到退出当前循环的作用


会发现,在 forEach 循环中使用如(2)中所示的 break,报错:使用 break 不合法

1、使用 try 监视代码块,在需要中断循环退出循环的地方抛出异常,并可以在 catch 中捕获到异常并打印出来

var a = [1, 2, 3, 4, 5, 6]
try {
    a.forEach((item, index) => {
        console.log('index: ', index, ' item: ', item)
        if( index == 4) {
            throw new Error('退出forEach')
        }
    })
} catch(err) {
    console.log('已退出', err)
}
/*
index:  0  item:  1
index:  1  item:  2
index:  2  item:  3
index:  3  item:  4
index:  4  item:  5
已退出 Error: 退出forEach
*/

2、使用 every or some 方法替换 forEach,every 在出现 return false 时,退出循环,some 在出现 return true 时,退出循环(具体使用见首页 数组遍历)

01-05 21:03