箭头函数在高阶函数中作为值传递,语法简洁,适用于map、filter、reduce等;其this继承外层作用域,不可用作构造函数,无arguments,可用剩余参数替代。

箭头函数在高阶函数中传递逻辑,核心是把它当作值(函数表达式)传进去,和普通函数一样,但要注意 this、arguments 和 new.target 的行为差异。
直接作为参数传给高阶函数
箭头函数写法简洁,适合内联传入 map、filter、reduce、setTimeout 等高阶函数:
-
数组操作:
[1, 2, 3].map(x => x * 2)→[2, 4, 6] -
条件筛选:
[1, 2, 3, 4].filter(n => n % 2 === 0)→[2, 4] -
异步延时:
setTimeout(() => console.log('done'), 100)
注意 this 绑定:它继承外层作用域
箭头函数没有自己的 this,会沿作用域链向上找。这在对象方法或事件回调中很关键:
- 普通函数作为回调时
this容易丢失(如obj.items.map(function() { return this.id })报错) - 改用箭头函数:
obj.items.map(item => this.id)—— 这里的this指向的是obj所在的外层上下文(前提是定义箭头函数时this已确定) - ⚠️ 注意:如果外层不是对象方法(比如在全局或普通函数里定义),
this可能是undefined或window,需结合实际作用域判断
不能用作构造函数,也不支持 arguments
箭头函数不能被 new 调用,也没有 arguments 对象:
- ❌
new (() => {})会抛出TypeError - ❌
(() => console.log(arguments))()会报错(argumentsis not defined) - ✅ 替代方案:用剩余参数
(...args) => console.log(args)
嵌套高阶函数时保持逻辑清晰
当需要返回一个函数(如柯里化、工厂函数),箭头函数可简化写法,但要避免过度嵌套影响可读性:
- 基础柯里化:
const add = a => b => a + b;,调用add(2)(3)→5 - 配合高阶函数封装:
const withLogging = fn => (...args) => { console.log('call', fn.name); return fn(...args); };,再用withLogging(x => x ** 2) - 建议:单行逻辑用箭头函数;多步骤、含副作用或需调试时,优先用具名函数或普通函数表达式
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











