簡體   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