ES6中的箭头函数 =>

前言,我们都知道es6中的箭头函数用的比较多;用起来也比较方便,接下来,我们就es6中的箭头函数来分析下用法:

首先,我们先看个例子:

//箭头函数的应用实例
//传统es5
var num1 = [1,2,3,4,5,4,3,2,1];
var mapResult = num1.map(function(item,index,array){
         return item*2;
});
console.log(mapResult);
//es6箭头函数的应用
var mapResults = num1.map((item,index,array) => item*2);
console.log(mapResults);
其实,不难发现,两者运行的结构都是一样的,但是,第二种方法看起来比较简洁,其实这就是es6中的箭头函数;

官方文档这样定义es6的语法:

([param] [, param]) => {
   statements
   //to do sth
}

param => expression

param是参数,我们可以根据参数的不同,分析一下三种情况:

(1)如果参数为0个,我们可以这样用:

() => {......}

(2)如果参数有1个,我们可以这样写:

x => {......}
(3)如果参数是多个的话,我们可以这样写:

当然,上面第一个例子的应用就是参数多个情况的;

需要注意的是,return语句并不是必须的,另外,多行语句需要用{}括起来,单行是不需要的,并且会作为函数的返回值;

var arr = [2];
var myarr = arr.map(item => item*2);
console.log(myarr);//[4]
//var myarr1 = arr.map(item => return item*2);//会报错
var myarr2= arr.map(item => {return item*2});
console.log(myarr2);//[4]
var myarr3 = arr.map(item => {item*2});
console.log(myarr3);//[undefiend]---没有定义返回值,返回 undefined
//我们看下箭头函数默认参数和剩余参数的应用
var f = (x=1,y=2) => x+y;
console.log(f());//3

var func2 = (x, ...args) => { console.log(args) };
func2(1,2,3); // 输出 [2, 3]

箭头函数的特性:

官方文档出,箭头函数没有constructor,没有prototype,所以不支持new操作符;但是他对this的处理和一般函数不一样;箭头函数中的this始终指向函数定义时候的this,而非执行的时候;
var f = {
    name:'andy',
    age:28,
    func:function(){
        console.log(this.name);
    },
    create:function(){
        setTimeout(function(){
            console.log(this);//
            this.func();
        },500)
    }
};
f.create();//this.func is not a function--不难发现,this现在指向window

//之所以会出错,是因为this的指向从f变成了全局;
var f1 = {
    name:'andy',
    age:28,
    func:function(){
        console.log(this.name);
    },
    create:function(){
        var _that = this;
        setTimeout(function(){
            _that.func();
        },500)
    }
};
f1.create();
//这样通过外部事先保存的就好了;这里我们就可以利用箭头函数
var f2 = {
    name:'andy',
    age:28,
    func:function(){
        console.log(this.name);
    },
    create:function(){
        setTimeout(() => {this.func()},500);
    }
};
f2.create();//this指向函数定义时候







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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值