我将如何创建逆序高阶函数?

时间:2018-10-01 09:46:04

标签: javascript function higher-order-functions

我需要创建一个称为invert的高阶函数。它应该执行以下操作:

返回新功能。 将函数作为唯一参数。 内部函数应采用任意数量的参数,并将对调用的函数的调用反转。

到目前为止,我只有http://prntscr.com/l0rma0,但它仅适用于不带参数的函数。

2 个答案:

答案 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;
  }
};

你的意思是那样吗?