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

Javascript函数在应返回false时返回true,javascript,Javascript,我有一个函数,用于检查输入数组中是否存在参数。它应该返回false,但不返回 { ... validation: params => { const valid = ["valid", "inputs"]; valid.forEach( v=> { if (!params.hasOwnProperty(v)) { return false; } }); return true; } 因此,即使if

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

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

    return true;
  }

因此,即使if语句的计算结果为true,它也不会返回false。无论发生什么情况,此函数始终返回true。

您返回的
是从
forEach
的回调函数返回的,而不是从主函数返回的。如果没有像
抛出这样的动作,您就不能从
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;
}

另一种方法是,使用适合作业的工具。如果要检查数组的每个成员是否都有特定的属性,请使用
each

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

因为
return false
stmt是回调函数的return stmt。尝试在回调函数中设置一个布尔值,并在其基础上返回,或者使用for循环。如果有人可以发布我如何重构此代码以达到我的预期效果,我可以接受这一点作为答案。是的,这确实是一个更好的主意。效果非常好。回调是一种痛苦。