箭头函数和匿名函数的this指向问题
时间: 2023-08-30 08:11:41 浏览: 52
箭头函数和匿名函数的 `this` 指向问题是有所不同的。
对于箭头函数来说,它的 `this` 始终指向函数定义时所在的作用域中的 `this`,而不是调用时的 `this`。这就意味着,在箭头函数中,无论它是如何被调用的,`this` 都不会改变。
而对于普通的匿名函数来说,它的 `this` 是在运行时动态确定的,具体指向哪里取决于函数的调用方式。如果是作为对象的方法调用,那么 `this` 指向该对象;如果是作为普通函数调用,那么 `this` 指向全局对象(浏览器中是 `window`,Node.js 中是 `global`)。
需要注意的是,在严格模式下,普通函数调用时的 `this` 不再指向全局对象,而是为 `undefined`。
相关问题
js匿名函数的this指向
在JavaScript中,匿名函数的this指向取决于函数的执行环境。根据引用[1]中的总结,可以得出以下结论:
1. 当匿名函数被直接调用时,其中的this指针永远指向window对象。
2. 如果匿名函数是作为对象的方法调用的,this指向调用该函数的对象。
3. 如果匿名函数通过new关键字创建一个新的对象,this指向新建出来的对象。
4. 在匿名函数内部,可以使用变量that或者箭头函数来保存外部函数的this指向,并在需要时使用该变量。
根据引用中的说明,我们可以看到在复杂的例子中,匿名函数的this指向是根据执行环境来决定的。例如,在例子1中,匿名函数func是直接调用的,所以this指向window对象,因此返回了全局变量name的值"the window"。而在例子2和例子3中,匿名函数func是作为对象的方法调用的,所以this指向了调用该函数的对象,分别返回了"my object"和"obj name"。
综上所述,匿名函数的this指向取决于函数的执行环境,包括直接调用、作为对象方法调用和通过new关键字创建对象。
vue箭头函数和普通函数
Vue中的箭头函数和普通函数有一些区别。首先,箭头函数都是匿名函数,而普通函数可以是匿名函数也可以是具名函数。
对于作用域来说,箭头函数没有自己的作用域,它会捕获所在上下文的作用域。这意味着在箭头函数中,this的值是继承自外部的作用域而不是函数自身的作用域。而普通函数在不同的情况下有不同的this指向。在全局函数中,普通函数中this指向window对象。当普通函数被作为某个对象的方法调用时,this就等于那个对象。
另外,箭头函数没有自己的arguments对象,它会继承外部函数的arguments对象。普通函数则有自己的arguments对象。
在Vue中,当你使用箭头函数定义一个方法时,这个箭头函数将会继承父组件的作用域,而不是创建一个新的作用域。这对于使用this来访问组件的data、methods和computed属性非常有用。
总的来说,箭头函数在Vue中常用于声明简单的方法或者是在回调函数中使用,而普通函数则更常用于定义复杂的方法或者需要独立作用域的场景。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)