Javascript函数在应返回false时返回true
我有一个函数,用于检查输入数组中是否存在参数。它应该返回false,但不返回Javascript函数在应返回false时返回true,javascript,Javascript,我有一个函数,用于检查输入数组中是否存在参数。它应该返回false,但不返回 { ... validation: params => { const valid = ["valid", "inputs"]; valid.forEach( v=> { if (!params.hasOwnProperty(v)) { return false; } }); return true; } 因此,即使if
{
...
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循环。如果有人可以发布我如何重构此代码以达到我的预期效果,我可以接受这一点作为答案。是的,这确实是一个更好的主意。效果非常好。回调是一种痛苦。