回调函数是被交由他人在合适时机调用的函数,高阶函数是接收函数作为参数或返回函数的函数;传递时只传函数引用(如func、function(){}、() => {}),不可加括号执行。

回调函数作为参数传递给高阶函数,本质就是把函数当作值来用——不加括号调用,只传函数名(或匿名函数/箭头函数)本身。
什么是回调函数和高阶函数
回调函数是被“交由别人在合适时机调用”的函数;高阶函数是接收函数作为参数、或返回函数的函数。两者配合使用,是 JavaScript 异步编程和函数式编程的基础。
传递方式:只传函数引用,不执行
关键点:传参时不能加 (),否则就变成立即执行并传入它的返回值(通常是 undefined)。
- ✅ 正确:传函数名(如
handleClick)、匿名函数(如function() { ... })或箭头函数(如() => {...}) - ❌ 错误:写成
handleClick()—— 这会立刻执行,把返回值当参数传过去
常见例子
比如数组方法 map、filter、forEach 都接受回调函数:
Java JDK 25 来自 OpenJDK 官方归档,版本为 JDK 25,本条下载地址已指向官方 Windows x64 zip 安装包直链,适合调试旧项目或兼容旧版 Java 运行环境。
const numbers = [1, 2, 3];
numbers.map(function(x) { return x * 2; }); // 传匿名函数
numbers.map(x => x + 1); // 传箭头函数
const double = x => x * 2;
numbers.map(double); // 传已定义的函数名
再比如事件监听:
button.addEventListener('click', function() {
console.log('被点了');
}); // 回调函数会在点击时由浏览器自动调用
自定义高阶函数时怎么接收和调用
你写的高阶函数内部要明确“接收函数参数”并“在需要时调用它”:
function doSomethingAsync(task, callback) {
console.log('开始执行任务...');
task(); // 执行传入的任务
callback(); // 在任务后调用回调
}
<p>doSomethingAsync(
() => console.log('正在处理'),
() => console.log('完成!')
);</p>
这里 callback 是形参,() => console.log('完成!') 是实参,传进去后被高阶函数内部调用。
不复杂但容易忽略:记住函数是值,传递时不带括号,调用时才加括号。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










