繁体   English   中英

如何在javascript中另一个函数内的循环函数中完全中断/返回?

[英]How do you break/return completely out of a looping function inside another function in javascript?

我不明白为什么下面的代码不记录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

Ë

我不确定您是否出于任何特定原因使用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);

希望这可以帮助

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

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

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

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

试试这个。 它会像循环一样遍历它。 它将在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);

这就是他们在这里做的事情: 每个循环如何摆脱jQuery

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM