JS箭头函数

x=>x*x     <======> function(x){ return x*x;}

箭头函数相当于匿名函数,并且简化了函数定义。箭头函数有两种格式,一种如上面所示,只包含一个表达式,连{..}和return都省略掉了;还有一种可以包含多条语句,这时不可以省略{..}和return,如果参数有两个,需要用()括起来。

(x,y) =>x*x+y*y;  //2个参数

()=>'哈哈';   //无参数

(x,y,...rest)=>{

       var i,

       sum=x+y;

       for(i=0;i<rest.length;i++){

            sum+=sum[i];

       }

        return sum;

}

如果要返回一个对象,就要注意x=>{foo:x}   <=====> x=>({foo:x})

箭头函数内部的this词法作用域由上下文确定,所以,用call()或apply()调用箭头函数时,无法对this进行绑定,即传入的第一个参数被忽略。(一言概之,箭头函数用当前的词法作用域覆盖了this本来的值,无法修改。)

var obj= {

    birth:1990,

    getAge:function(){

        var b = this.birth; //1990

        var fn=function(){

            console.log(this);  //window

            return new Date.getFullYear()-this.birth; //this指向undefined或window           

        } ;

        return fn;

    };

}

console.log( obj.getAge() ); //NaN

call()和apply()都是为了改变某个函数运行时的context即上下文而存在的。换句话说,就是为了改变函数体内部的this的指向。因为js的函数存在(定义时上下文)和(运行时上下文)以及(运行时上下文是可以改变的)这样的概念,二者的作用完全一样。套用知友说法,马云-挣钱-call(我)

猫想吃猪肉牛肉羊肉可以狗-吃肉-call(猫,猪肉,牛肉,羊肉)

狗-吃肉-apply(猫,[猪肉,牛肉,羊肉])。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值