一 箭头函数与普通函数的主要区别
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的回调函数