浅谈Javascript函数式编程(一)

  函数式编程有三个重要的特点:

  1、函数是第一类对象(first-class object)。

  2、函数可以作为参数传递。

  3、函数可以作为返回值。

    Example 1 : JS 求最大值

  对于纯数字组成的数组,无可置疑: 

var nums = [1,3,9,8,4];
_.max(nums);  //9

  数组的元素不是数字,而是一个对象:

    var persons = [{
            name:'zhangsan',
            age:22
        },{
            name:'lisi',
            age:26
        },{
            name:'wangwu',
            age:24
        }];

   索性的是,_max支持有第二个可选的参数,这个函数从对象里返回参与比较的值。

 _.max(persons,function(person){
            return person.age;
        });  // {name: "lisi", age: 26}

  这个一个非常好的做法,它不仅支持的普通数组的比较,同时也支持了对包含任意对象的数组的最大值。使得_.max的通用性大大增加。

  有人说事物本身的局限性在刚一出生的时候就已经确定了。如果_.max不满足于求最大值,而想要野心勃勃地取最值,那该怎么办?所以_.max自身也明白自己的局限性即只能比较大于。

  所以现在我们来创建一个新的函数finder 。 结合前面的经验 ,自然而然的我们的想法是finder包含三个参数:被操作的对象、取值函数和从两个对象中取优的函数。

 

  

   

 

 

 

  

 

  

  

posted @ 2016-04-15 10:11  我爱喝兽奶  阅读(175)  评论(0编辑  收藏  举报