什么是高阶函数_javascript中函数作为参数如何传递?

2次阅读

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

什么是高阶函数_javascript中函数作为参数如何传递?

高阶函数就是把函数当作参数传进去,或者返回一个函数的函数。核心就两点:函数可以像数字、字符串一样被传递和使用;javaScript 中函数是一等公民。

高阶函数的两种典型形式

一种是接收函数作为参数,比如 mapfilterreduce;另一种是返回函数,比如防抖(debounce)、柯里化(curry)函数。

  • 接收函数:传进去的是“做什么”,不是“做多少次”或“对谁做”,而是“怎么处理”
  • 返回函数:生成一个新函数,常用于配置复用或延迟执行

函数作为参数怎么传?不加括号才是传函数本身

关键细节:写 fn 是传函数引用,写 fn() 是立即执行并传它的返回值。

  • ✅ 正确:arr.map(handleItem) —— 把 handleItem 这个函数交给 map 内部去调用
  • ❌ 错误:arr.map(handleItem()) —— 先执行 handleItem(),把它的返回值(比如 undefined)传给 map,会报错
  • 需要传参时用箭头函数包装:arr.map(item => doSomething(item, extra))

自己写一个接收函数的高阶函数

理解原理最直接的方式是手写一个简化版的 filter:

什么是高阶函数_javascript中函数作为参数如何传递?

短影AI

长视频一键生成精彩短视频

什么是高阶函数_javascript中函数作为参数如何传递? 170

查看详情 什么是高阶函数_javascript中函数作为参数如何传递?

立即学习Java免费学习笔记(深入)”;

function myFilter(arr, predicate) {   const result = [];   for (let i = 0; i < arr.length; i++) {     if (predicate(arr[i])) { // 这里调用传入的函数       result.push(arr[i]);     }   }   return result; }  // 使用: const numbers = [1, 2, 3, 4]; const evens = myFilter(numbers, n => n % 2 === 0); // 传入一个判断逻辑 // evens 是 [2, 4]

你看,predicate 就是那个“判断规则”,它由调用者决定,myFilter 只负责流程控制。

基本上就这些。不复杂但容易忽略括号和执行时机,多写两次就能形成直觉。

以上就是什么是高阶函数_

text=ZqhQzanResources