箭头函数是ES6引入的简洁函数语法,词法绑定this、不可作为构造函数、无arguments对象,适用于需稳定this和简短逻辑的场景,但不适用于需动态this或实例化的场合。

箭头函数是 ES6 引入的一种简洁的函数定义语法,它没有自己的 this、arguments、super 或 new.target,也不可以作为构造函数使用。它最核心的特点是**词法绑定 this**,也就是说它的 this 值由定义时的外层作用域决定,而不是调用时的上下文。
箭头函数没有独立的 this
普通函数的 this 取决于调用方式(如对象方法调用、call/apply、事件回调等),而箭头函数不绑定自己的 this,直接继承外层作用域的 this 值。
- 在对象方法中使用普通函数,
this指向该对象;但若用箭头函数,则this指向外层(比如全局或外层函数) - 在事件监听器或定时器中,普通函数容易丢失
this,常需bind;箭头函数天然避免这个问题 - React 类组件中,类方法常用箭头函数写法(如
handleClick = () => {}),就是为了保持对组件实例的正确引用
箭头函数不能用作构造函数
箭头函数没有 prototype 属性,也没有 [[Construct]] 内部方法,因此无法通过 new 调用。
-
const fn = () => {}; new fn();会抛出TypeError: fn is not a constructor - 需要实例化对象时,必须使用普通函数或 class
箭头函数没有 arguments 对象
箭头函数内部访问 arguments 会沿作用域链向上查找,拿到的是外层函数的 arguments,不是自身参数列表。
立即学习“Java免费学习笔记(深入)”;
- 想获取参数时,应使用剩余参数(
...args)替代arguments - 例如:
const sum = (...nums) => nums.reduce((a, b) => a + b, 0);
语法更简洁,但适用场景有限
箭头函数省略 function 关键字、return(单表达式时)和花括号(单参数且单语句时),适合写简短逻辑。
- 单参数可省括号:
x => x * 2 - 单表达式自动返回:
arr.map(x => x ** 2) - 但多语句必须加花括号和显式
return:x => { console.log(x); return x + 1; } - 不适合需要动态
this、构造实例、重写arguments的场景
本质上,箭头函数不是普通函数的“升级版”,而是为特定需求设计的替代语法——它牺牲了灵活性,换来了更可预测的 this 和更紧凑的写法。选哪个,取决于你是否需要 this 绑定、是否要 new 实例、是否在回调中依赖词法作用域。










