高阶函数是接收函数作为参数或返回函数的函数,体现函数作为一等公民;典型形式有map/filter/reduce(传函数)和防抖/柯里化(返回函数),传参时需注意fn与fn()的区别。

高阶函数就是把函数当作参数传进去,或者返回一个函数的函数。核心就两点:函数可以像数字、字符串一样被传递和使用;JavaScript 中函数是一等公民。
高阶函数的两种典型形式
一种是接收函数作为参数,比如 map、filter、reduce;另一种是返回函数,比如防抖(debounce)、柯里化(curry)函数。
- 接收函数:传进去的是“做什么”,不是“做多少次”或“对谁做”,而是“怎么处理”
- 返回函数:生成一个新函数,常用于配置复用或延迟执行
函数作为参数怎么传?不加括号才是传函数本身
关键细节:写 fn 是传函数引用,写 fn() 是立即执行并传它的返回值。
- ✅ 正确:
arr.map(handleItem)—— 把 handleItem 这个函数交给 map 内部去调用 - ❌ 错误:
arr.map(handleItem())—— 先执行 handleItem(),把它的返回值(比如 undefined)传给 map,会报错 - 需要传参时用箭头函数包装:
arr.map(item => doSomething(item, extra))
自己写一个接收函数的高阶函数
理解原理最直接的方式是手写一个简化版的 filter:
标签: javascript java 区别 red
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。
还木有评论哦,快来抢沙发吧~