前端学习之ES6箭头函数

一、箭头函数的用法

        在没碰着箭头函数之前啊,咱也有定义函数的方法,也就是用function

const sum = function (num1, num2) {
    return num1 + num2
}

这是最传通的写法了,当然,也还有一些其它样子的,但也都是用function,说实话,大同小异。

        然后,就是在ES6里边,定义了一种新的函数写法,就是箭头函数,作用是为了简化代码,这里先写个例子和上边function的写法对应一下

const sum = (num1, num2) => {
    return num1 + num2
}

初略看上去,也就很好理解,二者也差不多,基本上就是把function变成了这个小箭头=>。

        不同的是,箭头函数在一些情况下,可以有简便的写法,下面总结一下

1.在只传一个参数的情况下

        举例

const num = (num) => {
    console.log(num)
}

 这种一个参数的情况下,就可以变成下面这种样子

const num = num => {
    console.log(num)
}

也就是把那个小括号除掉。

2.在只需要返回一行代码的情况下

        还是先举例

const sum = (num1, num2) => {
    return num1 + num2
}

 像这种返回一句代码的情况,就可以省略return 和大括号直接返回

const sum = (num1, num2) => num1 + num2

        其实也就这两种简便写法,可以结合使用,就是又传一个参数,又只返回一行代码的情况下,确实也是可以使代码更简洁一点,在一些函数传函数的情况下,箭头函数的运用还是比较多的。

二、箭头函数的this指向问题

        在箭头函数中,还有一个大重点就是它的this指向 ,原来在学ES6语法的时候,就被this指向的问题搞的晕头晕脑的,不过箭头函数中的this指向问题还算比较好理解,我觉得通过下面这个案例就可以很好的表现它的this指向问题

const obj = {
            aaa() {
                //1.
                console.log(this); //obj对象

                //2.
                setTimeout(function() {
                    console.log(this); //window
                });

                //3.
                setTimeout(() => {
                    console.log(this);//obj对象
                })
            }
        }
    obj.aaa()

这个案例是先定义一个对象,在对象里面定义一个aaa函数(这个函数是用ES6对象字面量的增强写法)然后再在里面打印三个this,一个是直接的,一个是装在定时器里面的普通函数里,还有一个是装在定时器的箭头函数里,最后调用aaa函数观察打印结果,分别是obj对象,window,obj对象。

        这里要说的是,箭头函数和其他函数的this指向肯定是不同的,我想,前两种指向应该咱都知道,第一个就是谁调用指向谁,函数aaa被obj调用,自然aaa里的this就指向obj,第二种定时器里面的函数是回调函数,指向window,所以关键就是为什么箭头函数会指向obj对象,这就要给出箭头函数this指向的一个非常权威的定义:箭头函数中的this引用的是它最近一层作用域中的this(所以箭头函数其实没有自己的this)。

        由此定义再回看案例,案例中箭头函数引用的可不就是它上一层aaa函数作用域中的this,也就与第一种情况的this指向的相同的。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值