箭头函数不绑定自身this,而是继承外层作用域的this值;它用=>定义,无arguments、prototype、super和new.target,不能作为构造函数。

箭头函数是 JavaScript 中一种简洁的函数定义语法,它不绑定自己的 this,而是继承外层作用域的 this 值。这是它和传统函数最核心的区别之一。
箭头函数的基本写法和特点
箭头函数用 => 定义,省略 function 关键字,参数少时可省括号,单表达式可省大括号和 return:
const add = (a, b) => a + b;const sayHi = () => console.log('Hi');const obj = { name: 'Alice', getName: () => this.name }; // this 指向外层,不是 obj
为什么箭头函数没有自己的 this
因为箭头函数在词法上“捕获”外层执行上下文的 this,而不是在调用时动态绑定。它没有自己的执行上下文(没有自己的 [[ThisBinding]]),所以不参与 this 的常规绑定规则(如默认绑定、隐式绑定、显式绑定、new 绑定)。
- 普通函数的
this取决于**怎么被调用**(例如obj.method()中this是obj) - 箭头函数的
this取决于**它在哪儿被定义**(即外层函数或全局作用域的this) - 因此
call、apply、bind对箭头函数的this无效
常见陷阱与适用场景
误用箭头函数容易导致 this 意外丢失,尤其在对象方法或事件回调中:
立即学习“Java免费学习笔记(深入)”;
- ❌ 错误:对象方法写成箭头函数 →
this不指向该对象 - ✅ 正确:需要动态
this时用普通函数;需要稳定继承外层this时用箭头函数(如 React 类组件中事件处理、定时器回调、Promise 链内) - ✅ 典型安全用法:
setTimeout(() => console.log(this.value), 100);—— 避免手动bind(this)
补充说明:箭头函数的其他限制
除了没有 this,箭头函数也没有:
-
arguments对象(可用剩余参数...args替代) -
prototype属性(不能用作构造函数,调用new会报错) -
super和new.target(在类中不可用)











