箭头函数与传统函数的核心区别在于this绑定方式不同:箭头函数词法绑定继承外层this,传统函数动态绑定取决于调用方式;此外箭头函数不能new调用、无prototype、无arguments、无super和new.target。

箭头函数和传统函数最核心的区别在于 this 绑定方式不同,其次在 arguments、new 调用、prototype 等方面也有本质差异。它们不是简单的语法糖,而是设计目的不同的函数类型。
箭头函数没有自己的 this
箭头函数不绑定自己的 this,而是**继承外层作用域的 this 值**(词法绑定)。传统函数的 this 在调用时才确定(动态绑定),受调用方式影响(如 obj.fn()、fn()、fn.call(obj))。
- 适合用在回调中避免
this指向丢失,比如事件处理、定时器、Promise 链里需要访问组件/实例属性时 - 不适合用作对象方法或需要动态
this的场景(例如 Vue 或 React 类组件中直接定义为箭头函数的方法,可能无法被正确调用)
箭头函数不能作为构造函数使用
箭头函数没有 prototype,也不能用 new 调用,否则会报错。
- 需要创建实例对象时,必须用传统函数(或 class)
- 工具函数、映射/过滤逻辑、一次性回调等无状态操作,箭头函数更简洁安全
箭头函数没有 arguments 对象
箭头函数内部访问不到 arguments,但可以用剩余参数 ...args 替代。
立即学习“Java免费学习笔记(深入)”;
- 需要兼容老旧写法或做参数透传时(如封装高阶函数),传统函数更灵活
- 现代代码中优先用
...args,此时箭头函数反而更一致
箭头函数没有 super 和 new.target
在类方法中,如果需要访问 super(调用父类方法)或判断是否被 new 调用,必须用传统函数。
- 类的普通方法、getter/setter、静态方法都应使用传统函数声明
- 类内部定义的事件回调、计算属性中的内联函数,可用箭头函数保持
this指向实例
this?是否会被 new 调用?是否要当方法挂到对象上?答案若为“是”,就用传统函数;否则箭头函数通常更合适。











