笔记部分摘自:http://www.csdn.net/article/2015-07-08/2825159-es6-in-depth-arrow-functions
一、基本用法
ES6中可以使用“箭头”(=>)定义函数。
1、参数单一时:
//ES5
var selected=allJobs.filter(function (job) {
return job.isSelected();
})
//ES6中可改写为以下方式
var selected=allJobs.filter(job => job.isSelected());
2、函数有多个参数时,只要把相关参数用括号包起来:
//ES5
var total = values.reduce(function (a,b) {
return a+b;
},0);
//ES6
var total = values.reduce( (a,b)=>a+b, 0);
3、箭头函数不仅是单一表达式,而是区块语句时:
//ES5
$("#a-btn").click(function (event){
playTrumpet();
doSomething();
});
//ES6
$("#a-btn").click(event=>{
playTrumpet();
doSomething();
});
二、关于this
1、箭头函数内部有绑定this的机制。
箭头函数没有自己的this值。函数体内的this对象,就是外层代码块的this。因为它没有this,故而不能用作构造函数。
同时,由于没有自己的this,也不能使用call()、apply()、bind()这些方法去改变this指向。
2、不可以使用arguments对象,该对象在函数体内不存在。如果要用,可以用Rest参数代替。
因为rest运算符显式表明你想要获取参数,而且arguments是一个类似数组的对象,而rest运算符可以提供一个真正的数组。