关于箭头函数中this的指向问题

2024-03-02

箭头函数

关于箭头函数中this的指向问题,如果去百度,大概率会搜到,箭头函数的this指向为window。但是不能被误导了。认为this始终指向window。如果没认清这一点,在以后的框架开发中将会一脸懵逼。

在 JavaScript 中,箭头函数 (=>) 与传统的函数声明或函数表达式有一个重要的区别,就是箭头函数没有它们自己的 this 绑定。相反,箭头函数继承了父级作用域中的 this 值。这意味着在箭头函数中,this 的值是在定义函数时确定的,而不是在调用时。


this.value = 'hahaha'

let test = {
  a:function(){
    console.log(this.value)
  },
  b:() => {
    console.log(this.value)
  }·
}
test.a() // undefined
test.b() // hahaha

上面,a的this指向的test,而test没有value属性,所以输出undefined

b的this继承自父级作用域,所以输出 hahaha

小备注:作用域 ==>可以定义变量的 { } 区域。而不是所有 { } 内的区域都算是作用域 (比如js对象的 { })。

PREV
树莓派入门
NEXT
docker使用指南(持续更新)