谈谈我对箭头函数的理解

什么是箭头函数?

()=>{}
箭头函数是ES6新增的一个语法糖,使用箭头函数书写更加的简洁方便;
箭头函数语法:

如果箭头函数有参数,则需要用()括起来,若只有一个参数,括号可以省略不写
a=>a
a=>{}
()=>{}
(a,b)=>{}
如果要执行的代码不止一行,需要用{}括起来

箭头函数在某些方面与普通函数有些差异……

  1. 普通函数this指向调用它的对象,没有调用者的时候指向顶级对象window;箭头函数没有自己的this,它的this指向父级对象的上下文(父级所在的作用域对象,不懂就console.log出来看),也就是说箭头函数一旦定义完成,它的指向是固定的,没法改变,它的指向是定义时所在的作用域,而不是执行时的作用域.
//对上面迷茫的话,你需要明白一个知识点作为补充,js没有对象作用域!
//例如
a={
	b:1,
	c:function(){
		return this.b		//使用this是因为对象没有作用域,单独写b无法拿到a里面的b
	}
}
a.c()	//1	//调用者是a,this指向a
//
        a = '全局变量a'
        let obj = {
            a: '局部变量a',
            fn1: function () {
                console.log('fn1'+this.a);
            },
            fn2: () => {
                console.log('fn2'+this.a);
            }
        }

        obj.fn1()  //局部变量a 普通函数,调用者是obj,this指向obj
        obj.fn2()   //全局变量a 箭头函数,没有this,定义时的this指向父级obj的所在作用域window

  1. 箭头函数没有arguments对象
        // let f=()=>{
        //     console.log(arguments); //undefined
        // }
        let f=function(){
            console.log(arguments); //类数组
        }
        f() 
  1. 箭头函数不能作为构造函数
var fn = ()=>{         
console.log("123");     
}
new fn(); //Uncaught TypeError: fn is not a constructor
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值