簡體   English   中英

當Javascript函數返回false時返回true

[英]Javascript function returns true when it should return false

我有一個函數,檢查輸入數組中是否存在param。 它應該返回false但不返回false。

{
  ...
  validation: params => {
    const valid = ["valid", "inputs"];
    valid.forEach( v=> {
      if (!params.hasOwnProperty(v)) {
        return false;
      }
    });

    return true;
  }

因此,即使if語句確實評估為true,它也永遠不會返回false。 無論如何,此函數始終返回true。

作為替代方案,使用正確的工具來完成工作。 如果要檢查數組的每個成員是否具有某個屬性,請使用以下every屬性:

validation: params => {
  const valid = ["valid", "inputs"];
  return valid.every(v => params.hasOwnProperty(v));
}

return是從forEach的回調函數返回而不是main函數。 如果沒有throw東西,你無法從forEach提前返回。 如果你想早點返回,請使用for...of循環:

validation: params => {
    const valid = ["valid", "inputs"];
    for (v of valid) {
      if (!params.hasOwnProperty(v)) {
      return false;  // this returns from the main function
    }
  };

  return true;
}

暫無
暫無

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

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