【发布时间】:2019-06-08 04:29:31
【问题描述】:
我试图弄清楚为什么在我的减速器函数中,当遇到返回 false 的函数时,isTrue 可以从 false 翻转到 true,但不能返回到 false。我只是想了解为什么它可以以一种方式翻转而不能以另一种方式翻转。
我知道翻转发生在return isTrue || val(num);
Directions are "// 定义一个函数 "passOne",它接受两个参数,第一个是任何值,第二个是函数数组。这些函数可以被视为测试,因为它们都将返回 true 或 false。 “passOne”将遍历/循环数组并将值作为参数传递给每个函数。如果至少一个函数(测试)返回true,“passOne”将返回true。如果没有一个函数返回true,“passOne”将返回 false。// 使用您的“passOne”来确定数字 113 是否为负数,偶数,或是否第一个数字为 1。然后测试 213。”
我尝试在 Python Tutor 中将其可视化。
function isNeg(num){
return num < 0 ? true: false;
}
function isEven(num){
return num % 2 === 0 ? true : false;
}
function oneDig(num){
return (num.toString())[0] === `1` ? true : false;
}
const funcs = [oneDig, isNeg, isEven];
// refactor "passOne" so that it uses the built-in "reduce" method instead of a "for" loop
function passOne(num, arr){
return arr.reduce((isTrue, val) => {
return isTrue || val(num);
}, false);
}
console.log(passOne(113, funcs)); //true
console.log(passOne(213, funcs)); //false
代码的行为符合预期,我只是不明白为什么返回“false”的回调不会将 isTrue 翻转回“false”,它如何保持“true”然后不更新为“false”,而不是这就是指令所说的,我只是好奇。
【问题讨论】:
标签: javascript reduce boolean-expression