箭头函数跟普通函数最大的区别就是消除函数二义性质
什么是函数二义性
函数的作用有两个;第一是构造函数来创建实例对象,第二是普通函数来执行;这就是函数二义性。
在es6中引入箭头函数和class来消除二义性质
为什么要消除二义性
- 降低函数复杂度
- 降低心智负担,一眼明白是函数调用还是构造函数
表现出来的区别
箭头函数本质是来消除二义性的,所以关于构造函数的一切都会去除。按照这个逻辑去想
- 箭头函数没有this,普通函数的this指向依赖它是如何被调用的
- 箭头函数没有arguments对象,而是通过剩余参数(rest parameters)来获取所有参数的值
- 箭头函数没有prototype原型,不能用作构造函数,而普通函数可以
class为了实现构造函数功能所以它做了什么不言而喻