JavaScript 面试题
目录

JavaScript 中箭头函数的用法和 this 指向问题?

· 约 3 分钟读完 · 第 435 / 507 章

推荐答案

本题详细解读

箭头函数的用法

箭头函数是 ES6 引入的一种新的函数语法,它提供了一种更简洁的方式来定义函数。箭头函数的基本语法如下:

  • 如果函数体只有一行代码,可以省略 {} 和 return 关键字。
  • 如果只有一个参数,可以省略参数周围的括号。

箭头函数的 this 指向

箭头函数的一个重要特性是它没有自己的 this 值,它会捕获其所在上下文的 this 值。这意味着箭头函数中的 this 是在定义时确定的,而不是在调用时确定的。

示例分析

  • 在 obj.greet() 中,greet 是一个普通函数,它的 this 指向 obj。
  • setTimeout 中的箭头函数捕获了 greet 函数的 this 值,因此箭头函数中的 this 也指向 obj。
  • 因此,this.name 是 obj.name,即 'Alice'。

对比普通函数

如果使用普通函数作为 setTimeout 的回调,this 会指向全局对象(在浏览器中是 window),而不是 obj。

  • 在这个例子中,setTimeout 中的普通函数的 this 指向全局对象,而不是 obj。
  • 因此,this.name 是 undefined。

总结

  • 箭头函数没有自己的 this,它会捕获定义时的 this 值。
  • 箭头函数适合用于需要保持 this 上下文不变的场景,比如回调函数或事件处理函数。
  • 普通函数的 this 是在调用时确定的,可能会因为调用方式的不同而改变。