高阶函数是接收函数为参数或返回函数的函数,如map、filter、reduce、sort、find、some等数组方法;也可自定义,如withLog(接收函数)和makeMultiplier(返回函数),提升代码灵活性与复用性。
高阶函数就是把函数当参数传进去,或者返回一个函数的函数。它不是某种特殊语法,而是 JavaScript 中函数作为“一等公民”的自然体现——函数可以被赋值、传递、返回,就像数字或字符串一样。
JavaScript 很多数组方法都是高阶函数,因为它们接收一个函数作为参数来处理数据:
[1,2,3].map(x => x * 2) 得到 [2,4,6]
[1,2,3,4].filter(x => x % 2 === 0) 得到 [2,4]
[1,2,3].reduce((sum, x) => sum + x, 0) 得到 6
只要函数接受函数为参数,或返回函数,它就是高阶函数。常见写法有两类:
function withLog(fn) { return function(...args) { console.lo
g('call', fn.name); return fn(...args); }; }
const loggedAdd = withLog((a,b) => a + b);
loggedAdd(2,3); // 输出 'call add',再返回 5function makeMultiplier(n) { return x => x * n; }
const double = makeMultiplier(2);
const triple = makeMultiplier(3);
double(5); // 10
triple(5); // 15它让代码更灵活、可复用,避免重复逻辑:
map 负责遍历,你只管写“每个元素怎么变”compose(f, g)(x) 等价于 f(g(x)),便于构建复杂操作makeMultiplier 就把 n 封装起来了基本上就这些。高阶函数不是炫技,而是让函数真正“活起来”的基本功。