Skip to content

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));
  }
}

遵循从右向左的数据