[英]“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.