箭头函数作为参数传递本质是函数值,可赋值、传参、调用,常见于map、filter、sort、setTimeout等高阶函数回调;零参需(),一参括号可省,多参或解构必带();返回对象须用小括号包裹。

箭头函数作为参数传递给其他函数,本质和普通函数一样——它就是一个值,可以赋值、可以传参、可以被调用。关键在于理解“函数是一等公民”,而箭头函数是更简洁的函数表达式写法。
箭头函数直接当回调传入
这是最常见也最典型的用法:把箭头函数作为回调(callback)传给高阶函数,比如 map、filter、sort、setTimeout 或自定义函数。
- 数组遍历:
[1, 2, 3].map(x => x * 2)—— 比function(x) { return x * 2; }更轻量 - 排序比较:
[3, 1, 4].sort((a, b) => a - b)—— 省去return和花括号 - 延时执行:
setTimeout(() => console.log('done'), 1000)—— 无参写法必须带()
传给自定义高阶函数(如 ask)
像教程中经典的 ask(question, yes, no) 这类接受两个回调的函数,完全可以不用提前声明具名函数,直接用箭头函数内联传入:
当用户要求为 Java 代码添加注释、修改注释、审查注释、整理注释格式,或要求按照代码注释规范处理 Java 文件时,使用本技能。本技能用于统一生成和维护 Java 类注释模板、按 Git 对比 release 判断版本号、补充每行代码上方中文块注释、调整注释空行规则,并保持 Java 文件 UTF-8 无 BOM 编码。典型触发场景包括:补充类注释、更新 @version、检查 @author 来源、整理行尾注释、把注释放到代码上一行、检查注释是否符合规范、构建前检查 Java 注释风格。
ask("Save changes?", () => alert("Saved!"), () => alert("Discarded"))- 好处是逻辑集中、无需额外命名、避免污染作用域
- 注意:如果箭头函数体有多行,需加花括号 +
return,例如() => { doA(); return doB(); }
注意事项:参数个数与括号规则
箭头函数的参数部分必须和接收方的调用约定匹配,括号不能随意省略:
立即学习“Java免费学习笔记(深入)”;
- 零个参数 → 必须写
(),如setTimeout(() => {}, 100) - 一个参数 → 括号可省,如
arr.map(x => x.toString()) - 多个参数 → 括号不可省,如
arr.reduce((acc, cur) => acc + cur, 0) - 解构参数也支持,如
users.forEach(({name, age}) => console.log(name))
别踩坑:返回对象要加括号
如果箭头函数想直接返回一个对象字面量,必须用小括号包裹,否则大括号会被解析为函数体:
- ✅ 正确:
arr.map(x => ({id: x, active: true})) - ❌ 错误:
arr.map(x => {id: x, active: true})—— 这会变成代码块,返回undefined

















