JS 函数式编程指南
https://www.gitbook.com/book/llh911001/mostly-adequate-guide-chinese/details
We both know what happens when you assume
源自一句名言“When you assume you make an ASS of U and ME”,意思是“让两人都难堪”
DRY: don’t repeat yourself
loose coupling high cohesion: 高内聚低耦合
YAGNI: ya aint gonna need it
Principle of least surprise: 最小意外原则
single responsibility: 单一责任
一等公民的函数>不要包裹住的冗余代码
// 太傻了
var getServerStuff = function(callback){
return ajaxCall(function(json){
return callback(json);
});
};
// 等价于
var getServerStuff = ajaxCall;
还讲到了纯函数:纯函数总能够根据输入来做缓存 - not so clear why?
还讲到了用粗暴的方式来做缓存 https://llh911001.gitbooks.io/mostly-adequate-guide-chinese/content/ch3.html#追求“纯”的理由
curry函数柯里化
把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,(第一个参数被放在闭包中),并且返回接受余下的参数而且返回结果的新函数
这里表明的是一种“预加载”函数的能力,通过传递一到两个参数调用函数,就能得到一个记住了这些参数的新函数。
比如reduce和bind
代码组合compose
var compose = function(f,g) {
return function(x) {
return f(g(x));
}
}
遵循从右向左的数据