=>是function的简写形式,支持expression和statement两种形式。同时一点很重要的时是他拥有词法作用域this值,帮助你很好的解决this的指向问题,这是一个很酷的方式,可以帮助你减少一些代码的编写,先来看看它的语法。
var arr = [1,2,3];
arr.map(item => item +1);
arr.map((item, index) => item + 1);
arr.forEach(item => {
if(item ===1) {
temp.push(item);
}
})
箭头函数内部没有constructor方法,也没有prototype,所以不支持new操作,但是他对this的处理与一般普通函数不一样,箭头函数的this始终指向函数定义时候的this,而非执行时,我们通过一个例子来理解:
var o = {
x:1,
func:function(){
console.log(this.x);
},
test:function(){
setTimeout(function(){
this.func();
}, 100);
}
}
o.test();
上面的代码会出现问题,因为this的指向从o变成了全局;那如果变成了这个样子的:
var o = {
x:1,
func:function(){
console.log(1);
},
test:function(){
setTimeout(() => {
this.func()
}, 100)
}
}
o.test();
我们还需要注意一点的就是this是不会改变this指向对象的,我们知道call和apply可以改变this的指向,但是在箭头函数中是无效的