ES6特性=>

function foo(x, y){
return x + y
}
var foo = (x, y) => x + y

包括一个参数列表(零个或多个参数,如果参数不是一个需要小括号包起来),然后是标识=>,函数体放在最后。

箭头函数是这一部分(x, y) => x + y, 然后这个函数引用被赋给变量foo

函数体如果只有一个表达式可以省略{..},并且前面有一个隐含的return

箭头函数总是函数表达式,并不存在箭头函数声明,它还是匿名的函数表达式。它们没有用于递归或者事件绑定/解绑定的命名引用。

箭头函数支持普通函数参数所有功能:默认值,解构,rest参数等。如果这个函数越长, => 带来的好处越小,反之越大。

this指向 在普通函数中,this指向是动态的,而在箭头函数中,是可以预测的。this在箭头函数中,和词法作用域有关。

var ctrl = {
makeRequest: function(){
var self = this;
btn.addEventListener('click', function (){
self.makeRequest()
}, false)
}
}

上述代码修改成箭头函数的话,是这样的:

var ctrl = {
makeRequest: function(){
btn.addEventListener('click', ()=>{
this.makeRequest()
}, false)
}
}

这样,省略了var self = this关键字function

但如果全部改为箭头函数的话,this就会乱套。此时指向全局对象。

// 不推荐, 改变了函数原有的本意
var ctrl = {
makeRequest: ()=>{
btn.addEventListener('click', ()=>{
this.makeRequest()
}, false)
}
}

如果要还原函数原来的意思,我们需要把var self = this这样的hack,或者通过var arg=Array.prototype.slice.call(..)词法复制。这样就达到了安全的全部替换成箭头函数的目的了。

结语:虽然箭头函数给我带来了便利,但是我们在使用的过程中还是要注意一些隐秘的坑。this的指向问题,是否需要递归?是否需要硬绑定或者是解绑... 判断函数体的长度是否适用箭头函数,可读性如何?

总结给大家推荐一个实用面试题库

 1、前端面试题库 (面试必备)            推荐:★★★★★

地址:前端面试题库

2、前端技术导航大全      推荐:★★★★★

地址:前端技术导航大全

3、开发者颜色值转换工具   推荐:★★★★★

地址 :开发者颜色值转换工具

最新文章

  1. 升级到VS2013.Update.4的问题
  2. activemq jmsTemplate 发送消息速度太慢
  3. ahjesus约束方法或属性的调用方
  4. NYOJ 93 汉诺塔(三)
  5. cookie程序设计举例
  6. [转]IOS 中文排序
  7. 基于AFN封装的带缓存的网络请求
  8. python+appium+unittest自动化测试框架环境搭建
  9. .NET面试题系列(十六)数据库面试题
  10. linux 依赖解决办法
  11. 阿里云搭建JAVA WEB环境(SQL Server + TomCat + 配置域名)
  12. java.lang.UnsatisfiedLinkError: No implementation found for int com.baidu.platform.comjni.map.commonmemcache.JNICommonMemCache.Create()
  13. mongodb的优缺点
  14. PHP学习 Cookie和Session
  15. 第6章 RTX 操作系统源码方式移植
  16. 【转】仅此一文让你明白ASP.NET MVC原理
  17. leetcode Two Sum II - Input array is sorted <面试常考题>
  18. Edgware Feign hystrix-dashboard
  19. java基础(3)--8种基本类型
  20. 加强版dd工具dc3dd

热门文章

  1. CF1744B Even-Odd Increments
  2. 超详细解锁Webpack步骤,踩坑记录
  3. 亚马孙机器可能出现权限问题导致ssh无法秘钥登录的情况
  4. 【ccc】为了ds的ccc2
  5. 聊聊最近爆火的 CHAT-GPT
  6. 快学会这个技能-.NET API拦截技法
  7. Hadoop 及Spark 分布式HA运行环境搭建
  8. cdq 分治学习笔记
  9. CCRD总目录(2007年至今,动态更新中)
  10. 代码随想录算法训练营day16 | leetcode ● 104.二叉树的最大深度 559.n叉树的最大深度 ● 111.二叉树的最小深度 ● 222.完全二叉树的节点个数