代码示例:
function higherOrderFunction(func) { return function(arg) { if (func) { return func(arg); } else { return arg; } }; }
function square(x) { return x * x; }
const myFunction = higherOrderFunction(square); console.log(myFunction(5)); // Output: 25
const myOtherFunction = higherOrderFunction(); console.log(myOtherFunction(5)); // Output: 5
上述代码中,higherOrderFunction是一个接受一个函数作为参数的高阶函数,这个函数返回一个新函数。新函数接受一个参数,如果传入的函数存在,则新函数将调用传入的函数并传入参数,否则将直接返回参数本身。如上例中,第一个输出25,表示调用了传入的square函数,第二个输出5,表示直接返回了传入的参数。这样,我们就实现了一个接受任何纯一元函数作为可选参数的高阶函数。