浅谈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包含三个参数:被操作的对象、取值函数和从两个对象中取优的函数。