什么是函数式编程
- 函数与其他数据类型一样,处于平等地位,可以赋值给其他变量,也可以作为参数,传入另一个函数,或者作为别的函数的返回值。
- 每一步都是表达式,都应该有返回值,而且尽可能避免读写
- 目的仅仅是返回结果,并不会修改任何变量
- 提供同样输入的情况下,返回值亦相同,易于优化
高阶函数
函数可以作为参数传递的,甚至可以作为返回值,这便是高阶函数
var greet = function(x) { return `Hello, ${ x }` };
var emote = function(x) { return `${x} :)` };
var compose = function(f, g) {
return function(x) {
return f(g(x));
}
}
var happyGreeting = compose(greet, emote);
// happyGreeting(“Mark”) -> Hello, Mark :)
柯里化
柯里化是一种使用匿名单参数函数来实现多参数函数的方法
pipeline(管道)处理数据流,也就是依次传入参数并返回值
Currying 的重要意义在于可以把函数完全变成「接受一个参数;返回一个值」的固定形式,这样对于讨论和优化会更加方便。
var curriedAdd = function(a) {
return function(b) {
return a + b;
};
};
var addTen = curriedAdd(10);
addTen(10); //20
未完待续