Map+Arrow函数的简写 - Part 2 of 函数式编程


  • administrators

    上一章节,我们学习了高阶函数,其中map就是一个高阶函数,一个非常常用非常实用的高阶函数。
    让我们重温一下这个函数的用法:

    function double (x) {
      return x*2;
    }
           
    const arr = [1,2,3];
    
    //map - return array
    const newArr1 = arr.map(double);
    console.log(newArr1);
    //[2,4,6]
    

    以上写法直观,但是有点"土",特别在这个ES6普遍流行的日子里。以上的函数可以通过Arrow函数,简化为:

    const newArr1 = arr.map(x=>x*2);
    

    什么玩意?是的,对于初学者来说,这个写法有点懵。下面我来解释一下:

    function double(x){
       return x*2;
    }
    //用arrow函数表示:
    const double = (x) => {
       return x*2;
    }
    //因为只有一个参数,所以括号可以省略:
    const double = x => {
       return x*2;
    }
    //又因为,函数返回值可以用一个return搞定,所以花括号又可以省略
    const double = x=> x*2;
    // 注意:在高级函数里,函数可以当做一个值,所以我们可以吧double直接传给map函数
    const newArr1 = arr.map(x=>x*2);
    

    现在应该清楚了吧?重复一下重点

    • 如果arrow函数只有一个参数,那么括号可以省略
    • 如果arrow函数返回值可以用一个return搞定,那么花括号又可以省略