为什么不能在javascript中使用循环?

时间:2015-12-17 15:47:21

标签: javascript

当我尝试编译时,编译器误会我:

['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
    }
}

那么,为什么?

4 个答案:

答案 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

要爆发,抛出异常。