为什么不是't for javascript中的每个循环

Why isn't forEach a loop in javascript?

本文关键字:循环 javascript for 为什么不      更新时间:2023-09-26

当我尝试时,编译器抛出错误:

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

那么,为什么呢?

forEach可能会让您相信自己处于for循环的上下文中,但事实并非如此。

它只是为数组中的每个元素执行的一个方法。因此,在函数内部,您只能控制当前迭代,但不能取消或中断对其他数组元素的方法订阅。

@Wim Hollebrandse很好地解释了你的问题。

如果你想打破这个循环,试着用一些而不是forEach:

['a', 'b', 'c'].some(function (x) {
  if (x == 'b') {
    return true; 
  }
});

这是因为您在一个函数中。break关键字在这里不可用(循环之外)

因为它是Array原型中的一个方法。

若要爆发,请抛出异常。