Javascript函数在应返回false时返回true

时间:2018-09-27 02:59:46

标签: javascript

我有一个检查输入数组中是否存在参数的函数。它应该返回false,但是不会。

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

    return true;
  }

因此,即使if语句的评估结果为true,也绝不会返回false。无论什么情况,此函数始终返回true。

2 个答案:

答案 0 :(得分:6)

作为替代,使用正确的工具进行作业。如果要检查数组的每个成员是否都具有特定属性,请使用every

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

答案 1 :(得分:4)

return是从forEach的回调函数返回的,而不是主要函数。没有forEach之类的东西,就无法从throw尽早返回。如果您想早点返回,请使用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;
}