箭头函数与传统函数的核心区别在于this绑定方式不同:箭头函数词法绑定继承外层this,传统函数动态绑定取决于调用方式;此外箭头函数不能new调用、无prototype、无arguments、无super和new.target。
箭头函数和传统函数最核心的区别在于 this
绑定方式不同,其次在 arguments、new 调用、prototype 等方面也有本质差异。它们不是简单的语法糖,而是设计目的不同的函数类型。
箭头函数不绑定自己的 this,而是**继承外层作用域的 this 值**(词法绑定)。传统函数的 this 在调用时才确定(动态绑定),受调用方式影响(如 obj.fn()、fn()、fn.call(obj))。
this 指向丢失,比如事件处理、定时器、Promise 链里需要访问组件/实例属性时this 的场景(例如 Vue 或 React 类组件中直接定义为箭头函数的方法,可能无法被正确调用)箭头函数没有 prototype,也不能用 new 调用,否则会报错。
箭头函数内部访问不到 arguments,但可以用剩余参数 ...args 替代。
...args,此时箭头函数反而更一致在类方法中,如果需要访问 super(调用父类方法)或判断是否被 new 调用,必须用传统函数。
this 指向实例this?是否会被 new 调用?是否要当方法挂到对象上?答案若为“是”,就用传统函数;否则箭头函数通常更合适。