箭头函数外部this指向
时间: 2023-09-29 19:04:31 浏览: 51
在箭头函数中,this指向的是定义时所在的作用域中的this,而不是调用时的this。因此,在箭头函数外部,this指向的是箭头函数所在的函数或全局对象(如果它在全局作用域中定义)。如果箭头函数被定义在一个对象的方法内,那么this就指向该对象。如果箭头函数被定义在一个构造函数内,那么this就指向该构造函数的实例。需要注意的是,在箭头函数外部,this的具体指向取决于函数的调用方式。如果函数被作为全局函数调用,则this指向全局对象;如果函数被作为对象方法调用,则this指向该对象。
相关问题
箭头函数内部this 和外部this指向
箭头函数内部的 `this` 指向其定义时所在的作用域的 `this` 值,而不是调用时的 `this` 值。如果箭头函数被定义在全局作用域中,那么其内部的 `this` 就指向全局对象 `window`。如果箭头函数被定义在某个对象的方法中,那么其内部的 `this` 就指向该对象。
与之相对的是普通函数,其内部的 `this` 指向调用该函数的对象。如果普通函数被直接调用,则其内部的 `this` 指向全局对象 `window`。如果普通函数被作为某个对象的方法调用,则其内部的 `this` 就指向该对象。
需要注意的是,在严格模式下,普通函数在未指定调用对象时其内部的 `this` 值会是 `undefined`,而不是默认指向全局对象 `window`。
箭头函数this指向
箭头函数的 this 指向是在定义函数时确定的,而不是在运行时确定的。箭头函数没有自己的 this 绑定,它会继承外层作用域的 this 值。这意味着箭头函数内部的 this 与外部的 this 是一致的,与箭头函数被调用的方式无关。
相反,普通函数的 this 指向是在函数被调用时根据调用方式动态确定的。通常情况下,this 的值取决于调用函数的对象。
这是一个箭头函数和普通函数的示例来说明它们之间的差异:
```javascript
const obj = {
name: "C知道",
arrowFunc: () => {
console.log(this.name); // undefined
},
regularFunc: function() {
console.log(this.name); // C知道
}
};
const arrowFunc = obj.arrowFunc;
const regularFunc = obj.regularFunc;
arrowFunc();
regularFunc();
```
在箭头函数中,this.name 打印出 undefined,因为箭头函数继承了外层作用域的 this(在此示例中为全局对象,即 Window 对象),而全局对象没有 name 属性。
而在普通函数中,this.name 打印出 "C知道",因为它的 this 绑定是根据调用方式动态确定的,而在此示例中该函数是作为 obj 对象的方法调用的,所以 this 绑定到了 obj 对象。
总结起来,箭头函数的 this 是静态的,继承自外层作用域的 this;而普通函数的 this 是动态的,根据调用方式决定。