ES6中的箭头函数

1.箭头函数

  • 箭头函数是用来简化函数定义语法的。

()=>{}

  • ()是用来放形参的
  • ()代表函数体
  • 通常会把箭头函数赋值给一个变量,如const fn=()=>{}
{
let arrow=(x,y)=>{
       return x+y
    }
console.log(arrow(1,2));//3
}
  • 如果只有一个参数,可以省略小括号,函数体只有一句并且为返回值,可以简写省略大括号。
{
let corrow1= x => x+1
console.log(corrow1(3));
}

2.箭头函数里this的指向

箭头函数不同于传统JavaScript中的函数,箭头函数并没有属于自己的this,它所谓的this是捕获其所在上下文的 this 值,作为自己的 this 值,并且由于没有属于自己的this,所以是不会被new调用的,这个所谓的this也不会被改变。

  • 需要操作对象本身时要用普通函数,不能用箭头函数,箭头函数指向的是window,无法操作对象的属性。
  • 函数里调用其他的方法,对于普通函数,谁调用他他就指向谁,就近原则,对于箭头函数则直接指向对象。
  • 总结来说箭头函数的this指向调用这个函数对象的外层对象。
{
let obj = {
            name:'apple',
            age:19,
            show:function(){
                console.log('function',this);//obj
                window.setTimeout(function(){
                    console.log('window-function',this);//window
                })
                window.setTimeout(()=>{
                    console.log('window-箭头',this);//obj
                })
                // console.log(this.age,this.name);//是有内容的apple 19
    
            },
            show2:()=>{
                console.log('箭头',this);//window
                // console.log(this.age,this.name);//undefined 箭头函数指向的是window,无法操作对象的属性
            }
        }
        obj.show();
        obj.show2();
}

3.箭头函数和普通函数的区别? 

  1. 箭头函数比普通函数更加简洁
  • 如果没有参数,直接写()即可
  • 如果只有一个参数,()可以省略
  • 如果参数有多个,可以用逗号分隔
  • 如果函数体只有一句,可以直接省略{}

     2.箭头函数没有自己的this指向

  • 箭头函数本身没有自己的this指向,它的this是父级普通函数的this

     3.call()、apply()、bind()等方法不能改变箭头函数中this的指向 

     4.箭头函数不具有 arguments 对象

  • 每一个普通函数调用后都具有一个arguments 对象,用来存储实际传递的参数。但是箭头函数并没有此对象。

     5.箭头函数不具有prototype原型对象。

     6.箭头函数不能作为构造函数使用 

  • 普通函数可以用于构造函数,以此创建对象实例。

     7.箭头函数不能当做Generator函数,不能使用yield关键字

     8.箭头函数不具有super。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值