es6箭头函数

首先说一下语法

function show(){

    console.log(123);

}

这是es5的写法,变成箭头函数长这样.

let show ()=>{

    console.log(123);

}

如果仅仅需要返回值的话,还有这种更快捷的方式

function show(){

    return 1;

}

等同于

let show ()=> 1;      

写法变了自然会有所区别的,首先

1 在箭头函数中没有arguments,但是我们可以用‘...’代替,...的作用就是将参数整合成数组,当然还可以反着来,将数组打散变成参数。

2 箭头函数不能作为构造函数。

3 this指向问题,在es5中,this的指向是很复杂的,写一个this,如果没有被调用的话,那在牛逼的大牛也不知道这个this指向的是谁,但是在es6的箭头函数中,this指向的是定义函数所在的对象,例如

var a = 5;
var obj = {
a : 12,

show : function(){

                var a = 11;

console.log(this.a)
setTimeout(function(){
console.log(this.a) //5
},1000)
}
};


obj.show(); //12    5

谁调用即指向谁,obj对象调用,this指向的就是obj,window调用this指向的就是window(注意:定时器调用无论写在哪个函数里面,都属于window调用.)

这是es5里面this指向的情况,如果对es5中的this指向不清楚的话,推荐阅读我的this指向规律,里面有很详细的介绍。

而箭头函数的this却有所不同了。

var a = 5;
var obj = {
a : 12,
show : function(){
var a = 10
console.log(this.a)
setTimeout(()=>{
console.log(this.a)
},100)
}
};


obj.show(); //12    12

第一个打印12很好理解,因为是obj调用的,但是第二个为什么也会打印12,而不是5或者10呢。

这个也就是箭头函数的第三个特性了,this指向的是函数被定义的对象。


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值