我有一个检查输入数组中是否存在参数的函数。它应该返回false,但是不会。
{
...
validation: params => {
const valid = ["valid", "inputs"];
valid.forEach( v=> {
if (!params.hasOwnProperty(v)) {
return false;
}
});
return true;
}
因此,即使if语句的评估结果为true,也绝不会返回false。无论什么情况,此函数始终返回true。
答案 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;
}