箭头函数内部this 和外部this指向
时间: 2024-05-20 20:11:05 浏览: 140
箭头函数内部的 `this` 指向其定义时所在的作用域的 `this` 值,而不是调用时的 `this` 值。如果箭头函数被定义在全局作用域中,那么其内部的 `this` 就指向全局对象 `window`。如果箭头函数被定义在某个对象的方法中,那么其内部的 `this` 就指向该对象。
与之相对的是普通函数,其内部的 `this` 指向调用该函数的对象。如果普通函数被直接调用,则其内部的 `this` 指向全局对象 `window`。如果普通函数被作为某个对象的方法调用,则其内部的 `this` 就指向该对象。
需要注意的是,在严格模式下,普通函数在未指定调用对象时其内部的 `this` 值会是 `undefined`,而不是默认指向全局对象 `window`。
相关问题
箭头函数外部this指向
在箭头函数中,this指向的是定义时所在的作用域中的this,而不是调用时的this。因此,在箭头函数外部,this指向的是箭头函数所在的函数或全局对象(如果它在全局作用域中定义)。如果箭头函数被定义在一个对象的方法内,那么this就指向该对象。如果箭头函数被定义在一个构造函数内,那么this就指向该构造函数的实例。需要注意的是,在箭头函数外部,this的具体指向取决于函数的调用方式。如果函数被作为全局函数调用,则this指向全局对象;如果函数被作为对象方法调用,则this指向该对象。
箭头函数改变this指向
箭头函数确实改变了this的指向。在普通函数中,this的值是在函数被调用时动态确定的,它指向调用该函数的对象。而在箭头函数中,this的值是在函数定义时确定的,它指向箭头函数所处的上下文。
具体来说,在箭头函数中,this指向的是定义箭头函数的词法作用域中的this值,而不是调用箭头函数时的对象。这意味着箭头函数没有自己的this绑定,并且无法使用call()、apply()和bind()等方法来改变this的值。
这种特性使得箭头函数特别适用于回调函数或需要保留外部this值的情况。同时,箭头函数也可以避免一些常见的this指向问题,比如在嵌套函数中使用this时导致this指向错误的情况。
需要注意的是,由于箭头函数没有自己的this绑定,所以在箭头函数内部使用this时,它会继续向上查找外部作用域中的this值,直到找到为止。如果没有找到符合条件的this值,则会返回undefined。
总之,箭头函数通过改变this的指向,解决了一些传统函数中的this指向问题,并且更加简洁和易于使用。
阅读全文