['a', 'b', 'c'].forEach(function (x) {
if (x == 'b') {
break //error message: Can't have 'break' outside of loop
}
})
有效语法:
var x = ['a', 'b', 'c'];
for (var i = 0; i < x.length; i++) {
if (x[i] == 'b') {
break
}
}
那么,为什么?
答案 0 :(得分:7)
forEach
可能会让您相信您处于for
循环的上下文中,但事实并非如此。
它只是为数组中的每个元素执行的方法。因此,在函数内部,您只能控制当前迭代,但不能取消或取消其他数组元素的方法订阅。
答案 1 :(得分:1)
@Wim Hollebrandse很好地解释了你的问题。
如果您想要打破循环,请尝试使用some代替forEach
:
['a', 'b', 'c'].some(function (x) {
if (x == 'b') {
return true;
}
});
答案 2 :(得分:0)
那是因为你在一个职能部门。 break
关键字在这里不可用(在循环之外)
答案 3 :(得分:0)
因为它是Array原型中的method。
要爆发,抛出异常。