详解Javascript ES6中的箭头函数(Arrow Functions)


Posted in Javascript onAugust 24, 2016

ES6可以使用“箭头”(=>)定义函数,注意是函数,不要使用这种方式定义类(构造器)。

一、语法

1. 具有一个参数的简单函数

var single = a => a
single('hello, world') // 'hello, world'

2. 没有参数的需要用在箭头前加上小括号

var log = () => {
 alert('no param')
}

3. 多个参数需要用到小括号,参数间逗号间隔,例如两个数字相加

var add = (a, b) => a + b
add(3, 8) // 11

4. 函数体多条语句需要用到大括号

var add = (a, b) => {
 if (typeof a == 'number' && typeof b == 'number') {
  return a + b
 } else {
  return 0
 }
}

5. 返回对象时需要用小括号包起来,因为大括号被占用解释为代码块了

var getHash = arr => {
 // ...
 return ({
  name: 'Jack',
  age: 33
 })
}

6. 直接作为事件handler

document.addEventListener('click', ev => {
 console.log(ev)
})

7. 作为数组排序回调

var arr = [1, 9 , 2, 4, 3, 8].sort((a, b) => {
 if (a - b > 0 ) {
  return 1
 } else {
  return -1
 }
})
arr // [1, 2, 3, 4, 8, 9]

二、注意点

1. typeof运算符和普通的function一样

var func = a => a
console.log(typeof func); // "function"

2. instanceof也返回true,表明也是Function的实例

console.log(func instanceof Function); // true

3. this固定,不再善变

obj = {
 data: ['John Backus', 'John Hopcroft'],
 init: function() {
  document.onclick = ev => {
   alert(this.data) // ['John Backus', 'John Hopcroft']
  }
  // 非箭头函数
  // document.onclick = function(ev) {
  //  alert(this.data) // undefined
  // }
 }
}
obj.init()

这个很有用,再不用写meself_this了,或者bind

4. 箭头函数不能用new

var Person = (name, age) => {
 this.name = name
 this.age = age
}
var p = new Func('John', 33) // error

5. 不能使用argument

var func = () => {
 console.log(arguments)
}
func(55) //

对于5,在Firefox36里测试是可以输出55的,貌似并没有这个限制

三、总结

以上就是关于ES6中箭头函数的全部介绍内容,希望对大家了ES6中的箭头函数能有所帮助。如果有疑问可以留言讨论。

Javascript 相关文章推荐
js类后台管理菜单类-MenuSwitch
Sep 12 Javascript
jquery中获得$.ajax()事件返回的值并添加事件的方法
Apr 15 Javascript
Jquery遍历节点的方法小集
Jan 22 Javascript
详解Angularjs filter过滤器
Feb 06 Javascript
JavaScript中的各种操作符使用总结
May 26 Javascript
Vue.js每天必学之组件与组件间的通信
Sep 08 Javascript
jQuery和JavaScript节点插入元素的方法对比
Nov 18 Javascript
jquery图片放大镜效果
Jun 23 jQuery
使用重写url机制实现验证码换一张功能
Aug 01 Javascript
Vue 指令实现按钮级别权限管理功能
Apr 23 Javascript
解决layer.msg 不居中 ifram中的问题
Sep 05 Javascript
微信小程序实现打卡签到页面
Sep 21 Javascript
手机端点击图片放大特效PhotoSwipe.js插件实现
Aug 24 #Javascript
jQuery Raty 一款不错的星级评分插件
Aug 24 #Javascript
jQuery实现自动输入email、时间和域名的方法
Aug 24 #Javascript
jQuery实现页面点击后退弹出提示框的方法
Aug 24 #Javascript
input 禁止输入特殊字符的四种实现方式
Aug 24 #Javascript
深入浅析JavaScript中的3DES
Aug 24 #Javascript
jQuery自适应轮播图插件Swiper用法示例
Aug 24 #Javascript
You might like
基于php常用函数总结(数组,字符串,时间,文件操作)
2013/06/27 PHP
推荐10个提供免费PHP脚本下载的网站
2014/12/31 PHP
Linux系统递归生成目录中文件的md5的方法
2015/06/29 PHP
Laravel框架使用monolog_mysql实现将系统日志信息保存到mysql数据库的方法
2018/08/16 PHP
Laravel框架基于ajax和layer.js实现无刷新删除功能示例
2019/01/17 PHP
yii框架使用分页的方法分析
2019/07/25 PHP
js静态作用域的功能。
2006/12/25 Javascript
javascript实现二分查找法实现代码
2007/11/12 Javascript
jQuery 剧场版 你必须知道的javascript
2009/05/27 Javascript
jQuery 动态酷效果实现总结
2009/12/27 Javascript
jQuery实现选项卡切换效果简单演示
2015/12/09 Javascript
jquery及js实现动态加载js文件的方法
2016/01/21 Javascript
微信小程序  生命周期详解
2016/10/27 Javascript
JS中数据结构之栈
2019/01/01 Javascript
在element-ui的select下拉框加上滚动加载
2019/04/18 Javascript
微信小程序实现消息框弹出动画
2020/04/18 Javascript
Vue组件为什么data必须是一个函数
2020/06/11 Javascript
vue 获取到数据但却渲染不到页面上的解决方法
2020/11/19 Vue.js
[39:46]完美世界DOTA2联赛PWL S2 LBZS vs Rebirth 第二场 11.25
2020/11/25 DOTA
Python获取远程文件大小的函数代码分享
2014/05/13 Python
详解Python的Django框架中的模版继承
2015/07/16 Python
利用Python对文件夹下图片数据进行批量改名的代码实例
2019/02/21 Python
Python函数的参数常见分类与用法实例详解
2019/03/30 Python
python调用接口的4种方式代码实例
2019/11/19 Python
django form和field具体方法和属性说明
2020/07/09 Python
python实现从ftp上下载文件的实例方法
2020/07/19 Python
pycharm不以pytest方式运行,想要切换回普通模式运行的操作
2020/09/01 Python
美国综合购物商城:UnbeatableSale.com
2018/11/28 全球购物
女孩每月服装订阅盒:kidpik
2019/04/17 全球购物
失业者真诚求职信范文
2013/12/25 职场文书
小学生美德少年事迹材料
2014/08/24 职场文书
环保项目建议书
2014/08/26 职场文书
加强干部作风建设整改方案
2014/10/24 职场文书
先进个人总结范文
2015/02/15 职场文书
2015年驾驶员工作总结
2015/04/29 职场文书
vue实现input输入模糊查询的三种方式
2022/08/14 Vue.js