在计算机科学中,函数式编程(FP)一直是编程界的榜样,FP是一种编码风格,主要有以下两个最佳实践:
- Immutability
- Statelessness
在javascript中,函数式编程有很多种库可供选择,每一种库都有它自己的特长,我们将介绍几种流行的库,并了解这些库以及为什么使用这些库。
Underscore/lodash
Underscore 是一个 JavaScript 工具库,它提供了一整套函数式编程的实用功能,但是没有扩展任何 JavaScript 内置对象。
Lodash库是一个具有一致接口、模块化、高性能等特性的 JavaScript 工具库。
为什么要使用
链式操作
Underscore提供操作链条的方法。可以使用 _.chain()
包裹一个集合(collection),然后调用其它的underscore方法,最后通过调用 _.value()
进行解包获取最后的值。
举个栗子:
1
2
3
4
5
6
|
const movies = [
{ title: "Mad Max: Fury Road", ratings: [8.9, 9.9, 7.9], year: 2015 },
{ title: "Tomorrowland", ratings: [6.0, 7.0, 8.0], year: 2015 },
{ title: "Jurassic World", ratings: [7.2, 8.2, 9.2], year: 2015 },
{ title: "Inception", ratings: [7.5, 7.5, 8.5], year: 2010 }
];
|
一些常用方法:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
// 计算总和
const sum = function(numbers) {
return _.reduce(numbers, function(sum, n){
return sum + n }, 0);
};
// 计算平均值
const average = function (numbers) {
return sum(numbers) / numbers.length;
};
// 是否推荐
const isRecommended = function (movie) {
return average(movie.ratings) >= 8;
};
|