详解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 相关文章推荐
Javascript打印网页部分内容的脚本
Nov 17 Javascript
Jquery公告滚动+AJAX后台得到数据
Apr 14 Javascript
Js nodeType 属性全面解析
Nov 14 Javascript
异步安全加载javascript文件的方法
Jul 21 Javascript
angularjs表格分页功能详解
Jan 21 Javascript
基于JavaScript FileReader上传图片显示本地链接
May 27 Javascript
jQuery学习笔记之入门
Dec 14 Javascript
js判断手机号是否正确并返回的实现代码
Jan 17 Javascript
判断横屏竖屏(三种)
Feb 13 Javascript
利用Node.js+Koa框架实现前后端交互的方法
Feb 27 Javascript
JS中Swiper的使用和轮播图效果
Aug 11 Javascript
Vue实现购物车详情页面的方法
Aug 20 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编码转换问题
2015/07/28 PHP
PHP基于imagick扩展实现合成图片的两种方法【附imagick扩展下载】
2017/11/14 PHP
thinkphp5框架调用其它控制器方法 实现自定义跳转界面功能示例
2019/07/03 PHP
csdn 批量接受好友邀请
2009/02/19 Javascript
jquery与google map api结合使用 控件,监听器
2010/03/04 Javascript
拖动table标题实现改变td的大小(css+js代码)
2013/04/16 Javascript
仿淘宝TAB切换搜索框搜索切换的相关内容
2014/09/21 Javascript
jQuery使用之标记元素属性用法实例
2015/01/19 Javascript
jQuery子属性过滤选择器用法分析
2015/02/10 Javascript
分享五个有用的jquery小技巧
2015/10/08 Javascript
在ASP.NET MVC项目中使用RequireJS库的用法示例
2016/02/15 Javascript
JavaScript编写页面半透明遮罩效果的简单示例
2016/05/09 Javascript
Jquery跨域获得Json的简单实例
2016/05/18 Javascript
基于jQuery实现仿QQ空间送礼物功能代码
2016/05/24 Javascript
深入了解JavaScript的逻辑运算符(与、或)
2016/12/20 Javascript
vue数据双向绑定原理解析(get & set)
2017/03/08 Javascript
jQuery实现上传图片前预览效果功能
2017/08/03 jQuery
详解vue-cli3多环境打包配置
2019/03/28 Javascript
Vue2(三)实现子菜单展开收缩,带动画效果实现方法
2019/04/28 Javascript
如何用webpack4.0撸单页/多页脚手架 (jquery, react, vue, typescript)
2019/06/18 jQuery
vue router动态路由设置参数可选问题
2019/08/21 Javascript
微信小程序实现Swiper轮播图效果
2019/11/22 Javascript
Vue过渡效果之CSS过渡详解(结合transition,animation,animate.css)
2020/02/05 Javascript
JS数组转字符串实现方法解析
2020/09/04 Javascript
Python实现求数列和的方法示例
2018/01/12 Python
对matplotlib改变colorbar位置和方向的方法详解
2018/12/13 Python
python如何制作缩略图
2019/04/30 Python
python读取配置文件方式(ini、yaml、xml)
2020/04/09 Python
python def 定义函数,调用函数方式
2020/06/02 Python
美国紧身牛仔裤品牌:NYDJ
2017/05/24 全球购物
澳大利亚优惠网站:Deals.com.au
2019/07/02 全球购物
函授毕业生自我鉴定
2013/11/06 职场文书
就业协议书范本
2014/04/11 职场文书
2014幼儿园保育员工作总结
2014/11/10 职场文书
婚宴祝酒词大全
2015/08/10 职场文书
Redis实现主从复制方式(Master&Slave)
2022/06/21 Redis