我需要创建一个称为invert的高阶函数。它应该执行以下操作:
返回新功能。 将函数作为唯一参数。 内部函数应采用任意数量的参数,并将对调用的函数的调用反转。
到目前为止,我只有http://prntscr.com/l0rma0,但它仅适用于不带参数的函数。
答案 0 :(得分:1)
希望这应该足够了:
function invert(fn) {
return (...args) => !fn(...args);
}
这是测试用例:
function invert(fn) {
return (...args) => !fn(...args);
}
// test 1
const returnsTrue = () => true;
const returnsFalse = invert(returnsTrue);
console.log( returnsFalse() === false );
// test 2
const isEven = x => x % 2 === 0;
const isOdd = invert(isEven);
console.log( isOdd(13) === true );
console.log( isOdd(10) === false );
// test 3
const isSumBiggerThan100 = (...args) => args.reduce((acc, val) => acc + val) > 100;
const isSumLessThanOrEqualTo100 = invert(isSumBiggerThan100);
console.log( isSumLessThanOrEqualTo100(10, 3, 8, 5, 4, 20) === true);
console.log( isSumLessThanOrEqualTo100(70, 10, 50, 23) === false)
答案 1 :(得分:-1)
const higherFunction = (something) => {
return function innerFunc(...params) {
return !something;
}
};
你的意思是那样吗?