ES6新引入了箭头函数,它是一种表达简洁的函数,下面我们来看看它有哪三个显著优势。

假设定义了一个名为names的数组,如下:

现在需要给数组的每一项后面添加’Bos’这个字符串,如果用传统的函数语句来实现,我们会这么做:

(小注:因为用了模板字符串所以此例中使用了重音符’ ` ’)

那么,使用箭头函数可以怎么做?第一步,用 => 替代 function :

第二步,当参数仅有一个的时候,可以把括弧省略,如下:

是不是看上去简洁了些?

第三步:无需显示地写return语句,箭头函数内置 return 功能。即,如果你只想使用箭头函数返回什么东西的话,那么无需显示地写出 return 。如下:

这一步,除了删除return语句之外,还把花括号也删除了,并且把多行代码浓缩成一行。是不是非常简洁?但在这需要注意的是,之所以删除花括号,是因为函数体内仅有一句想要返回的语句。

当函数没有参数的时候,箭头函数还可以更进一步的简洁,即把括弧给去掉,换成下划线’_’。如下:

此处由于不需要形参,我们把括弧’ ( ) ’删除用’ _ ’ 替代来假装变量名,实际上你可以在此用任何你想用的变量名,反正他们也不会真正被用上。比如:

它们返回的都是’Cool Bos’组成的数组而已。

箭头函数中的this关键字,指向的是定义时的对象,而不是使用时的对象。即,虽然在以往的函数中,this所指的对象只有在调用的时候才知道是谁,但是在箭头函数中,它是固定不变的。我们拿两个例子来比对一下:

传统函数

无论输出多少次p.age的值,都是0。因为作为Person构造函数实例的p对象,才是this所指的对象,而age这个私有属性在构造函数中已经定义,this.age的值便是0。

箭头函数

而用箭头函数改写后,打印出的p.age值每一次都不相同,每当过去1秒,它的值+1。

我们再来三个例子说明一下:

构造函数里嵌套定时器的传统写法

可看到,函数体里最后一行this.val打印出来是0,但是定时器里每隔1秒打印出来的是值是NaN,因为在定时器里面的this指向的是window,然后在全局环境下并没有找到window.val的值,所以是NaN。

对上面的函数稍作修改

在全局作用域下定义val这个变量,并给其赋值-10。

从结果可以看出,每隔1秒打印出来的值是全局作用域下的-10累加增1。

来看看箭头函数的情况

可以发现在定时器这个匿名函数作用域里,this所指向的对象,就是定义时所指的对象。对于构造函数来说,它就是Fn的实例p。所以,this.val的值基于0,每隔1秒增1。

最后补充一点:目前的JavaScript版本把所有箭头函数当成匿名函数,但我们可以用一个变量指向匿名函数,以这种方式来仿造声明函数(本文中的示例函数就是如此)。如下:

据此,总结箭头函数的三个优点: 1. 语法简洁,能够写出漂亮的单行函数。2. 内置return语句,当函数只想返回某个东西的时候,可以不必显现地写出return。3.this关键字无需重新指定,这在进行事件绑定时会很有帮助。

需要补充的是,箭头函数里面没有arguments参数,如果需要用到,可以这么写(...arguments) => {...}。但是这种方法在严格模式下不适用。

android 箭头函数,浅谈箭头函数相关推荐

  1. 浅谈云函数的代理IP利用面

    浅谈云函数的代理IP利用面 前言 本篇文章介绍如何通过 Serverless(云函数) 实现各种扫描器探测功能,以达到绕过态势感知.WAF等安全设备,增大蓝队研判人员溯源难度,实现封无可封,查无可查的 ...

  2. 浅谈async函数await用法

    async和await相信大家应该不陌生,让异步处理变得更友好. 其实这玩意儿就是个Generator的语法糖,想深入学习得去看看Generator,不然你可能只停留在会用的阶段. 用法很简单,看代码 ...

  3. android 清屏函数,浅谈android截屏问题

    做了几个月的截屏开发,稍微了解了一下这方面的知识,于是拿来分享一下,也许对你有一些帮助吧. 我是基于android2.3.3系统之上的,想必大家应该知道在android源码下面有个文件叫做screen ...

  4. Linux系统常用函数,浅谈linux下的一些常用函数的总结(必看篇)

    1.exit()函数 exit(int n)  其实就是直接退出程序, 因为默认的标准程序入口为int main(int argc, char** argv),返回值是int型的. 一般在shell下 ...

  5. 浅谈Python3函数命名空间与作用域

    日期:2020年1月23日 作者:Commas 注释:前一章节讲述了命名空间和作用域的知识,现在我们来谈一谈Python3函数的命名空间吧. 如果您想了解更多有关Python的知识,那么请点<我 ...

  6. 浅谈javascript函数劫持

    创建时间:2007-12-02 文章属性:原创 文章提交:hkluoluo (luoluonet_at_hotmail.com) by luoluo on 2007-11-30 luoluonet_a ...

  7. Javascript变量函数浅谈

    一.变量 在javascript变量中可以存放两种类型的值:原始值和引用值. 原始值存储在栈上的简单字段,也就是值直接存储在变量所标示的位置内. 引用值存储在堆内的对象,栈内变量保存的是指向堆内对象的 ...

  8. 浅谈python函数签名

    函数签名对象,表示调用函数的方式,即定义了函数的输入和输出. 在Python中,可以使用标准库inspect的一些方法或类,来操作或创建函数签名. 获取函数签名及参数 使用标准库的signature方 ...

  9. 浅谈js函数三种定义方式 四种调用方式 调用顺序

    在Javascript定义一个函数一般有如下三种方式: 函数关键字(function)语句: function fnMethodName(x){alert(x);} 函数字面量(Function Li ...

最新文章

  1. linux下查看nginx,apache,mysql,php的编译参数
  2. 信息系统项目管理师-信息系统范围管理核心知识点思维脑图
  3. 分享内容apd android,Appium - DesiredCapabilities对象的参数配置及含义
  4. 4米乘以12米CAD图_SolidWorks转CAD时让字体格式相对完好的方法
  5. 北理工2017年爬虫目录
  6. 跟计算机断层扫描相关的技术,计算机断层扫描技术(简称PET)
  7. php dir变量,[PHP] sys_get_temp_dir()和tempnam()函数报错与环境变量的配置问题
  8. C语言课后习题(45)
  9. Python字符串与编码
  10. 番茄助手Visual Assistx报错The security key for this program currently。。
  11. Android手机avi转换为mp4手机,avi转mp4怎么进行 avi转mp4方法介绍【图解】
  12. 机器学习与数据挖掘之ROC与AUC
  13. 手机文字识别工具,帮你快速复制图片上的文字
  14. Simulink统一模块大小
  15. 【阿里云镜像】使用VM虚拟机安装OpenWRT并更换阿里云镜像源
  16. java中介系统平台_基于JAVA的房屋中介管理系统的设计与实现.ppt
  17. Altium Designer怎样秒敷铜?
  18. GitHub添加SSH key
  19. IntelliJ IDEA上debug模式启动
  20. C/C++编程笔记:什么叫做函数插入?带你解析C语言中的函数插入

热门文章

  1. java764位it之家_Java Runtime Environment 7迎来Update 45 - IT之家
  2. [附源码]Nodejs计算机毕业设计明天摄影工作室Express(程序+LW)
  3. 微信小程序 左右滑动切换页面(炫酷效果)以及点赞特效
  4. 金融信创与云化转型|期货超融合架构转型与场景探索合集
  5. 【MySQL从入门到精通】【高级篇】(二十八)子查询优化,排序优化,GROUP BY优化和分页查询优化
  6. ?: (2_0.W001) Your URL pattern...This was likely an oversight when migrating to django.urls.path().”
  7. OutputCache缓存各参数的说明
  8. 智能会议-离线语音识别系统
  9. “爱情”和“技术”,你会选择哪个?
  10. Halcon图像处理软件下载