基本用法
()=>{}
箭头函数的优点
1.箭头函数使表达更简洁
如果只有一条语句,一行就可以表达
const isEven = n => n % 2 == 0;
const square = n => n * n;
2.箭头函数的this的作用域是定义时所在的对象
这是由于箭头函数本身没有自己的this,所以导致内部的this就是外层函数的this。
箭头函数的这个特性适合用来很有利于封装回调函数。
let handler = {
id: '123456',
init: function() {
document.addEventListener('click',
event => this.doSomething(event.type), false);
},
doSomething: function(type) {
console.log('Handling ' + type + ' for ' + this.id);
}
};
上面这个例子,箭头函数使this可以指向handler,所以就可以使用handler的一些方法。
3. 箭头函数还有一个功能,就是可以很方便地改写 λ 演算
// λ演算的写法
fix = λf.(λx.f(λv.x(x)(v)))(λx.f(λv.x(x)(v)))
// ES6的写法
var fix = f => (x => f(v => x(x)(v)))
(x => f(v => x(x)(v)));
由于λ 演算对于计算机科学非常重要,这使得我们可以用 ES6 作为替代工具,探索计算机科学。
使用箭头函数的注意点
- 函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象。
- 不可以当作构造函数,不可以使用new命令,否则会抛出一个错误。
- 不可以使用arguments对象,该对象在函数体内不存在。可以用rest参数代替。
- 不可以使用yield命令,因此箭头函数不能用作Generator函数。
- 不可以使用call、apply来绑定this,因为箭头函数没有自己的this