箭头函数中的this指向的什么
时间: 2023-09-13 11:13:18 浏览: 52
箭头函数中的this指向的是函数定义时所在的作用域,而不是指向运行时所在的作用域。\[1\]这与普通函数中的this指向是不同的。在普通函数中,this的指向是可变的,可以根据函数的调用方式和上下文来确定。但是在箭头函数中,this的指向是固定的,会绑定到定义时所在的作用域。\[1\]这意味着无论箭头函数在哪里被调用,它的this都会指向定义时所在的作用域,而不会受到调用方式的影响。这也是为什么在回调函数中使用箭头函数时,不需要进行this的固定,因为箭头函数会继承外层函数调用的this。\[3\]
#### 引用[.reference_title]
- *1* *2* *3* [ES6中箭头函数的this指向](https://blog.csdn.net/weixin_43739375/article/details/88600586)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
相关问题
js中箭头函数this的指向
箭头函数的特点是没有自己的 this 绑定,它会捕获外层作用域的 this 值作为自己的 this 值。简单来说,箭头函数的 this 指向定义时所在的父级作用域的 this,而不是调用时所在的对象。
这与普通函数的 this 绑定机制有所不同。普通函数的 this 值是在调用时动态绑定的,取决于调用时的上下文。而箭头函数的 this 值是在定义时确定的,不会改变。
例如,在以下代码中:
```javascript
const obj = {
name: 'C知道',
greet: function() {
setTimeout(() => {
console.log(`Hello, ${this.name}!`);
}, 1000);
}
};
obj.greet();
```
箭头函数内部的 this 指向的是 obj 对象,因为它是在 obj 对象中定义的。所以输出结果会是 "Hello, C知道!"。
相比之下,如果我们将箭头函数改为普通函数:
```javascript
const obj = {
name: 'C知道',
greet: function() {
setTimeout(function() {
console.log(`Hello, ${this.name}!`);
}, 1000);
}
};
obj.greet();
```
此时,普通函数内部的 this 指向的是调用时的上下文,即全局对象(在浏览器中是 window)。因此,输出结果会是 "Hello, undefined!",因为全局对象中并没有 name 属性。
总结起来,箭头函数的 this 指向是静态的,由定义时所在的父级作用域决定。这使得箭头函数在处理回调函数或使用 this 时更加方便。
箭头函数外部this指向
在箭头函数中,this指向的是定义时所在的作用域中的this,而不是调用时的this。因此,在箭头函数外部,this指向的是箭头函数所在的函数或全局对象(如果它在全局作用域中定义)。如果箭头函数被定义在一个对象的方法内,那么this就指向该对象。如果箭头函数被定义在一个构造函数内,那么this就指向该构造函数的实例。需要注意的是,在箭头函数外部,this的具体指向取决于函数的调用方式。如果函数被作为全局函数调用,则this指向全局对象;如果函数被作为对象方法调用,则this指向该对象。