JavaScript 中普通函数和箭头函数的 this 指向差异
在 JavaScript 中,对象中的普通函数和箭头函数在处理 this 时存在显著差异。
const people = {
name: '',
hello() {
console.log(this.name)
},
hey: () => {
console.log(this.name)
}
}
people.hello()
people.hey()
执行以上代码,people.hello() 会输出空字符串,而 people.hello() 会输出 undefined。这是因为:
- 普通函数中的
this指向调用函数的对象:在hello()函数中,this.name指的是people对象的name属性。 - 箭头函数中的
this指向定义函数时的作用域:hey()是一个箭头函数,它没有自己的作用域,因此this指向的是全局作用域。在全局作用域中,并没有name属性,所以输出undefined。
简单来说,普通函数的 this 是动态的,根据调用方式决定,而箭头函数的 this 是静态的,在定义时就确定了。
理解 this 在 JavaScript 中的行为是至关重要的,因为它直接影响函数内部对对象属性的访问方式。
原文地址: https://www.cveoy.top/t/topic/qn9L 著作权归作者所有。请勿转载和采集!