簡體   English   中英

函數中的“返回”,如果Lodash forEach中的語句()

[英]“Return” out of Function, If Statement Inside Lodash forEach()

function(){
    _.forEach(listOfSomething, function (something) {
      if(someCondition){
        return false
      }
    });
    return true;
}

看起來很簡單 - 嘗試檢查每個項目的某些條件,如果沒有滿足任何項目退出函數並返回false。 在沒有退出的情況下完成循環時,返回true。

始終返回true,嘗試使用控制台日志記錄,並且確實返回“返回錯誤”點。

我是否遺漏了一些關於js如何工作的明顯事實或者這是一個lodash的事情?

你遺漏的是你的return false語句與你的return true語句不同。 您可能希望使用與any / some不同的lodash方法。

function(){
    return _.some(listOfSomething, function (something) {
      return someCondition;
    });
}

那是因為有2個函數,第二個函數的返回不會使第一個函數返回。 您應該將變量設置為true,並在滿足條件時將其更改為false:

function(){
    var condition = true;
    _.forEach(listOfSomething, function (something) {
      if(someCondition){
        condition = false;
        return;
      }
    });
    return condition;
}

快速瀏覽一下,“return”將從內部函數返回false,該函數對列表的每個元素執行一次(通過forEach),而不是退出外部函數

事實上,我認為forEach將繼續執行(不確定它的語義,也許它從它調用的函數中尋找一個“錯誤”結果來打破循環)

但是在forEach為true之前設置一個名為result的變量,在if中將其設置為false,然后在結尾處有一個返回結果

應該工作,但你應該檢查有關forEach的文檔,看看確實做“返回false”會打破循環,或者是否有一些中斷或類似命令來執行它(可能是_.break();但我'我不確定那個“_”實例是什么

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM