箭头函数的this继承外层非箭头函数作用域的this,词法绑定、不可修改;不能作为构造函数,无arguments;适用于解决回调中this丢失,但不适用于需动态this的对象方法或构造场景。

箭头函数是 JavaScript 中一种简洁的函数定义语法,它不绑定自己的 this,而是**继承外层作用域的 this 值**——这是它最核心的行为特征,也是“没有自己的 this”的真正含义。
箭头函数的 this 是词法绑定的
普通函数的 this 在调用时才确定(动态绑定),取决于怎么被调用(如对象方法、call/apply、事件回调等)。而箭头函数的 this 在定义时就固定了,由外层最近的非箭头函数作用域决定,无法被改变。
- 不能用
call、apply或bind修改它的this - 不能作为构造函数使用(没有
prototype,调用会报错) - 没有
arguments对象(可用剩余参数...args替代)
常见场景:解决回调中 this 丢失问题
在事件监听、定时器或异步回调中,普通函数容易丢失 this 指向。箭头函数天然避免这个问题:
class Button {
constructor() {
this.label = 'Click me';
}
init() {
// ❌ 普通函数:this 指向 button 元素,不是 Button 实例
document.getElementById('btn').addEventListener('click', function() {
console.log(this.label); // undefined
});
// ✅ 箭头函数:this 继承 init 方法的 this,即 Button 实例
document.getElementById('btn').addEventListener('click', () => {
console.log(this.label); // 'Click me'
});
}
}
注意:不是“没有 this”,而是“不管理 this”
箭头函数确实有 this,但它不创建新的绑定,只是沿用外层的。如果外层也没有 this(比如在全局作用域定义箭头函数),那它的 this 就是全局对象(浏览器中是 window,严格模式下是 undefined)。
YXPHP6系统可以看做是一个模版平台,而且它又能独立工作. 而且YXPHP6系统也不需要数据库支持. 你可以开发自己的模板,也可以同步官方的模板后进行自己的二次开发,前提是您对YXPHP6要有一定的了解.YXPHP6不仅可以用作企业建站,甚至是blog,只要是您能想到的,YXPHP6几乎都可以胜任. 因为YXPHP6系统本身与模板之间可以说是独立运行的.也就是说,不管你做什么样的网站或者是应用,
立即学习“Java免费学习笔记(深入)”;
- 嵌套多层箭头函数时,
this始终指向最外层非箭头函数的this - 对象字面量中直接写箭头函数,其
this不指向该对象,而是外层作用域
什么时候不该用箭头函数?
需要动态 this 的场景不适合用箭头函数:
- 定义对象方法(希望
this指向调用它的对象) - 需要使用
arguments或new实例化的构造逻辑 - 需要明确控制
this(如用bind预设上下文)










