详解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判断生效时间不得大于失效时间的思路及代码
Apr 23 Javascript
js对图片base64编码字符串进行解码并输出图像示例
Mar 17 Javascript
angularjs中的单元测试实例
Dec 06 Javascript
node.js中使用socket.io的方法
Dec 15 Javascript
javascript数据类型示例分享
Jan 19 Javascript
10条建议帮助你创建更好的jQuery插件
May 18 Javascript
jQuery对象与DOM对象转换方法详解
May 10 Javascript
15款最好的Bootstrap在线编辑器
Aug 03 Javascript
Web开发中客户端的跳转与服务器端的跳转的区别
Mar 05 Javascript
基于Jquery Ajax type的4种类型(详解)
Aug 02 jQuery
基于node.js express mvc轻量级框架实践
Sep 14 Javascript
Vue.js组件props数据验证实现详解
Oct 19 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
Smarty变量用法详解
2016/05/11 PHP
PHP模块化安装教程
2016/06/01 PHP
在 Laravel 项目中使用 webpack-encore的方法
2019/07/21 PHP
Javascript & DHTML 实例编程(教程)基础知识
2007/06/02 Javascript
jquery中动态效果小结
2010/12/16 Javascript
关于javaScript注册click事件传递参数的不成功问题
2014/07/18 Javascript
基于AngularJS+HTML+Groovy实现登录功能
2016/02/17 Javascript
jQuery日历插件datepicker用法详解
2016/03/03 Javascript
详解nodejs 文本操作模块-fs模块(二)
2016/12/22 NodeJs
在使用JSON格式处理数据时应该注意的问题小结
2017/05/20 Javascript
vue环境搭建简单教程
2017/11/07 Javascript
vue实现tab切换外加样式切换方法
2018/03/16 Javascript
解决vue-cli + webpack 新建项目出错的问题
2018/03/20 Javascript
在Layui 的表格模板中,实现layer父页面和子页面传值交互的方法
2019/09/10 Javascript
转换layUI的数据表格中的日期格式方法
2019/09/19 Javascript
原生JavaScript实现滑动拖动验证的示例代码
2019/12/06 Javascript
uniapp,微信小程序中使用 MQTT的问题
2020/07/11 Javascript
用Nodejs实现在终端中炒股的实现
2020/10/18 NodeJs
python缩进区别分析
2014/02/15 Python
Python中列表、字典、元组、集合数据结构整理
2014/11/20 Python
Python脚本简单实现打开默认浏览器登录人人和打开QQ的方法
2016/04/12 Python
Python入门教程之运算符与控制流
2016/08/17 Python
基于Python实现定时自动给微信好友发送天气预报
2018/10/25 Python
python处理multipart/form-data的请求方法
2018/12/26 Python
对python中基于tcp协议的通信(数据传输)实例讲解
2019/07/22 Python
python读取hdfs并返回dataframe教程
2020/06/05 Python
TUMI澳大利亚网站:美国旅行箱包品牌
2017/03/27 全球购物
英国最大的LED专业零售商:Led Hut
2018/03/16 全球购物
印度第一网上礼品店:IGP.com
2020/02/06 全球购物
简短证婚人证婚词
2014/01/09 职场文书
金融事务专业毕业生求职信
2014/02/23 职场文书
物联网工程专业推荐信
2014/09/08 职场文书
教师党员自我评价2015
2015/03/04 职场文书
2015年幼儿园班主任个人工作总结
2015/10/22 职场文书
煤矿安全学习心得体会
2016/01/18 职场文书
全家福照片寄语怎么写?
2019/04/02 职场文书