ES6 箭头函数

箭头函数中:()=>{} 等价于 function () {}

<script>
	/*
		箭头函数:
		第一种:没有参数,且只有一条语句输出  可以省略{}
	*/
    let fun = ()=>console.log("我是fun箭头函数");
    fun();
    //   第二种:有一个参数,有且只有一条语句输出  可以省略{}和return
    let fun2 = (x)=>x+1;
    console.log(fun2(2));   //  3
    //  第三种:有多个参数,且只有一个函数体输出  可以省略{}和return返回
    let fun3 = (a,b,c)=>a+b+c;
    console.log(fun4(1,2,3));   //  6
    //  第四种:有多个参数,且有多条语句输出,不能省略{}和return
    let fun5 = (a,b,c)=>{
		return a+b+c;
	};
	console.log(fun5(4,5,6));   //15
    //  第五种:箭头函数没有自己的this,箭头函数的this是依赖于上层的对象是谁,箭头函数的this就是谁
    function fun4(){
        console.log(this);
    }
    
</script>
箭头函数需注意的点:
  • 函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象
  • 不可以当做构造函数,也就是说,不可以使用new命令,否则会抛出一个错误
  • 不可以使用arguments对象,该对象在函数体内不存在。如果要用,可以用rest参数代替。
箭头函数中this的指向
  • 全局函数中的this
<script>
    //  ES5
	function fun(){
        console.log(this);   //  window
    }
    fun();
    
    //  ES6
    var fun1 = n =>{
        console.log(this);   //  window
    }
    fun1();
</script>

Window中声明的函数,es5和es6中的this都指向window

  • 事件处理函数中的this
<script>
    //  ES5
	var oDiv = document.getElementById('box');
    oDiv.onclick = function(){
        console.log(this);   //  div
    }
    
    //  ES6
    oDiv.onclick = () =>{
        console.log(this);   //  window
    }
</script>

事件处理函数中,es5中的this指向的是当前触发事件的对象,es6中的this指向的是window

  • 对象方法中的this
<script>
	//  ES5
    function Person(){
        this.eat = function(){
            return function(){
                console.log(this);   //  window
            }
        }
    }
    var p = new Person();
    p.eat()();
    
    //  ES6 
    function Dog(){
        this.eat = function(){
            return () = >{
                console.log(this);   //  Dog
            }
        }
    }
    var d = new Dog();
    d.eat()();
</script>

es5中因为函数传出到全局所以指向的是window,es6中函数在哪儿定义的就指向谁

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值