箭头函数是ES6引入的简洁函数写法,无独立this、arguments、super和new.target,不能作构造函数,适用于回调场景以避免this丢失,但不适用于对象方法或需继承的类方法。

箭头函数是 ES6 引入的一种简洁的函数写法,用 => 定义,本质是函数表达式的简写形式。它和普通函数最核心的区别不在语法多“酷”,而在于 没有自己的 this、arguments、super 和 new.target,且不能作为构造函数使用。
箭头函数没有独立的 this
普通函数调用时,this 指向由调用方式决定(如对象方法调用指向该对象,单独调用指向全局或 undefined)。箭头函数则完全不绑定 this,它直接继承外层作用域的 this 值,且无法通过 call、apply、bind 改变。
- 适合用在回调中避免
this丢失,比如事件处理、定时器、数组方法(map、filter)里需要访问当前对象属性时 - 但不适合定义对象方法——因为它的
this不指向该对象,容易出人意料
没有 arguments 对象
箭头函数内部访问不到 arguments,想获取参数得改用剩余参数(...args)。
- 普通函数:
function() { console.log(arguments[0]); } - 箭头函数:
() => { const [first] = arguments; } ❌ 报错;应写成(...args) => console.log(args[0]);
不能用作构造函数
箭头函数没有 prototype 属性,也不能用 new 调用,否则会抛出 TypeError。
立即学习“Java免费学习笔记(深入)”;
const Person = () => {}; new Person(); // TypeError: Person is not a constructor- 需要实例化对象时,必须用普通函数或 class
没有 new.target 和 super
箭头函数也不支持 new.target(检测是否被 new 调用)和 super(访问父类),所以不能用于类的方法重写或继承场景。
- 类中的方法如果写成箭头函数(如
clickHandler = () => {}),只是绑定到实例的普通属性,不是原型方法,且无法用super - 需明确区分:要继承/重写 → 用普通方法;要自动绑定
this→ 可用箭头函数(但注意内存和语义)
基本上就这些。箭头函数不是“升级版”普通函数,而是定位清晰的轻量工具——适合写短小回调、保持词法作用域,但不该用来替代所有函数。用对地方很省心,乱用反而埋坑。










