箭头函数 vs 普通函数 核心区别
一、核心概念
- 普通函数:
function关键字定义,有独立作用域 - 箭头函数:
=>语法,继承外层作用域
二、主要区别
1. this 指向
- 普通函数:由调用方式决定
- 箭头函数:继承定义时的外层 this,不可改变
// 普通函数
obj.method(); // this 指向 obj
// 箭头函数
const func = () => this; // this 来自外层
2. 构造函数
- 普通函数:可作构造函数,用
new调用 - 箭头函数:不能作构造函数,
new调用报错
3. arguments 对象
- 普通函数:有
arguments对象 - 箭头函数:无
arguments,用剩余参数...args
4. prototype 属性
- 普通函数:有
prototype - 箭头函数:无
prototype
5. 语法
- 箭头函数更简洁,支持隐式返回
- 普通函数可函数提升,箭头函数不能
三、使用场景
- 箭头函数:回调函数、保持 this 场景
- 普通函数:构造函数、对象方法、动态 this 场景