JavaScript中的=>(箭头函数)运算符的用法

HTML5 herman 51浏览 0评论

在JavaScript中=>符号运算符,我们一般称之为箭头函数。因为从外形上来说,它确实是长的想一个箭头。而它的作用和function又类似,因此箭头函数就是由此而来。

在一些框架中我们经常会遇到一些箭头函数,例如下面的代码:

var site = () => {
    var url="www.xttblog.com";
    var title="业余草";
}

看起来很陌生,如果你没理解箭头函数的话。
遇到这样的代码你是不是就看不懂了?现实中就是这样,遇到一个我们不懂的语法,可能整本书就没法阅读下去了。那么本文就教你彻底的理解箭头函数。
上面的函数其实等价于:

var site = function(){
    var url="www.xttblog.com";
    var title="业余草";
}

翻译过来就是这样简单,简写你就是看不懂。
再来看一个例子:

var test = function(params){
    return params;
}

它等价于

var test = params => params;

看到上面的例子中有一个参数。那如果需要两个参数呢?看下面的例子:

var add = function(a,b){
    return a+b;
}

它等价于

var add = (a,b) => a+b;

如果是两个参数,那就需要用括号给括起来。
上面的例子都没有具体的逻辑,如果有具体的逻辑,那又该怎么办呢?
看下面的例子:

var demo = function(a,b){
    if(a>b){
        return a-b;
    } else{
        return b-a;
    }
}

它等价于

var demo = (a,b) =>{
    if(a>b){
        return a-b;
    } else{
        return b-a;
    }
}


下面再看一个返回对象的用法:

var site = (url,title) =>{
    return ({
        url: url,
        title: title
    })
}

再来一个数组排序的用法:

var arr = [1, 9 , 2, 4, 3, 8].sort((a, b) => {
    if (a - b > 0 ) {
        return 1;
    } else {
        return -1;
    }
});

总结

箭头函数的确与传统函数有不同之处,但仍存在共同的特点。

  • 对箭头函数进行typeof操作会返回“function”。
  • 箭头函数仍是Function的实例,故而instanceof的执行方式与传统函数一致。
  • call/apply/bind方法仍适用于箭头函数,但就算调用这些方法扩充当前作用域,this也依旧不会变化。
  • 箭头函数与传统函数最大的不同之处在,禁用new操作