ES6易混淆点:箭头函数和箭头函数表达式

好吧,看到很多关于箭头函数的网上帖子或者资料,动不动就一上来开始各种语法,简写什么的,稀里糊涂搞了半天不知道是说的是箭头函数呢还是箭头函数表达式。

为啥要区分箭头函数和箭头函数表达式,有必要,就像Javascript里面函数和和函数表达式肯定不是一回事啊!函数本身是一个对象,可以有很多途径生成,而这个函数表达式只是其中一种方法。

(x,y) => x+y这样的就是一个函数表达式,这个函数表达式只是有点特别:

  1. 它用了这个“=>”所以也被形象的称之为箭头函数表达式
  2. 这个表达式生成的函数对象或者函数实例有一些特性,如没有this属性,没有prototype属性等
  3. 箭头函数表达式其实是一个计算过程,它会生成一个匿名函数出来,然后你把它的引用赋给一个变量:let arrowFunc = (x,y) => x+y ;这个arrowFunc就称之为箭头函数,而(x,y) => x+y 是箭头函数表达式,在使用理解上的话对两者肯定也是有差异的:

举个例子

const withClassName = Component => props => (<Component {...props} className="classA">);

这里面为啥 <Component {...props} className="classA">要放在一个() 里面?很多人会说这个Componet组件是个对象,根据语法… , 没问题,那么箭头函数本身也是一个函数对象,为啥不把 props => (<Component {...props} className="classA">) 这个整体也放在()里面呢?对啊,人家是表达式,表达式可以这么任性的写。这时候你要再把它当作一个函数来看那就行不通了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值