你如何在javascript中的另一个函数中完全打破/返回循环函数?

时间:2016-07-07 22:29:00

标签: javascript return

我不明白为什么下面的代码没有记录1和2然后返回false。返回是否会从forEach作用域和firstLayer的作用域中返回false?是的,它甚至没有打破forEach范围。

var arrayExample = [1,2,3];

function firstLayer (arr) {
  arr.forEach(function (num) {
    console.log(num);
    if (num === 2) {return false;}
  });
  return true;
}

firstLayer(arrayExample);

//logs 1,2,3 and returns tru

ë

3 个答案:

答案 0 :(得分:1)

我不确定你是否因为任何特殊原因而使用forEach,但是如果你需要在循环中打破任何东西,那么for循环就是我的选择。我不确定你是否可以逃避这样的forEach,但这是工作代码:

var arrayExample = [1,2,3];

function firstLayer (arr) {

 for(i=0; i < arr.length; i++){
    var num = arr[i];
    console.log(num);

    if(num === 2){
        return;
    }
  }
}

firstLayer(arrayExample);

希望这有帮助

答案 1 :(得分:1)

这绝对正常:您的return false;arr.foreach()函数体的一部分。

因此,当num = 2时,此arr.foreach()函数返回false,否则返回true。但是:

  • return对函数的工作方式没有影响,因为
  • 之后没有语句
  • 返回的布尔值永远不会在外部firstlayer()函数
  • 的上下文中使用

相反,此外部函数始终返回true。

答案 2 :(得分:0)

试试这个。它会像循环一样遍历它。它将突破2并且不会继续3。

var arrayExample = [1,2,3];

function firstLayer (arr) {
  $.each(arr, function (num) {
    console.log(num);
    if (num === 2) {
      return false;
    }
  });
  return true;
}

firstLayer(arrayExample);

他们就是这样做的: How to break out of jQuery each Loop