> 文章列表 > 箭头函数和普通函数有什么区别

箭头函数和普通函数有什么区别

箭头函数和普通函数有什么区别

箭头函数与普通函数的主要区别

1  声明方式不同

函数:function(参数,..., 参数){return}

箭头函数:(不同名的参数,..., 不同名的参数){return}

2 this指向不同

函数:指向运行时所在的对象

箭头函数:箭头函数没有自己的this对象,它内部的this是上层作用域中的this

注:箭头函数的this指向不可变,call、apply、bind无法改变它的this指向

3 箭头函数不能作为构造函数,它没有原型prototype,箭头函数使用new会报错

4 箭头函数没有new.target

   箭头函数的this指向全局对象时,使用new.target会报错

   箭头函数的this指向普通函数时,使用new.target返回普通函数的引用

5 箭头函数没有arguments

   它处于全局时,使用arguments报错

   它处于普通函数作用域时,arguments是上层普通函数的作用域

6 不可以使用yield命令,因此箭头函数不能用作Generator函数

7 箭头函数不适用的场景

   不适合做对象方法,且方法中使用了this

   当函数需要动态this时

8 箭头函数适用用的场景

   箭头函数适合于无复杂逻辑或副作用的纯函数场景,如:map、reduce、filter的回调函数