callback与higher order function的定义及核心区别是什么?
高阶函数的定义及与回调函数的核心区别
高阶函数的定义
高阶函数是满足以下任意一个条件的函数:
- 可以接收一个或多个函数作为输入参数
- 执行完成后会返回另一个函数作为输出结果
我们日常开发中常用的Array.map()、Array.filter()、setTimeout()都属于典型的高阶函数。
与回调函数的核心区别
二者本质上是配套的依存关系,核心差异有以下几点:
- 角色属性不同:高阶函数是调用方/逻辑载体,回调函数是被调用方/逻辑注入项,回调函数是作为参数传入高阶函数中执行的。
- 功能定位不同:高阶函数负责封装通用的可复用逻辑,比如遍历数组、等待异步触发等固定流程;回调函数负责传入定制的业务逻辑,让同一个高阶函数可以适配不同的使用场景,不需要修改高阶函数本身的代码。
- 存在条件不同:回调函数只有被传入高阶函数时才能发挥对应的作用,高阶函数可以独立存在,支持按需传入不同的回调函数实现不同的效果。
举个简单的代码示例方便理解:
// 自定义高阶函数:封装数组遍历转换的通用逻辑 function processArray(arr, callback) { const output = [] for(const item of arr) { output.push(callback(item)) } return output } // 回调函数1:自定义转换逻辑为数值翻倍 function double(item) { return item * 2 } // 回调函数2:自定义转换逻辑为数值加1 function addOne(item) { return item + 1 } // 同一个高阶函数传入不同回调,得到不同结果 console.log(processArray([1,2,3], double)) // 输出 [2,4,6] console.log(processArray([1,2,3], addOne)) // 输出 [2,3,4]
内容的提问来源于stack exchange,提问作者neha-89
相关产品推荐
相关产品推荐

