我很喜欢这个pure function概念很简单的例子,比如...
function addTwo(val){
return val + 2;
}
Run Code Online (Sandbox Code Playgroud)
给定相同的参数,它产生相同的结果,导致参考透明度和良好的确定性代码.
但后来我遇到过这样的例子(取自弗里斯比教授大多数指导,但我在其他FP JS书籍上找到了相似的例子)
//pure
var signUp = function(Db, Email, attrs) {
return function() {
var user = saveUser(Db, attrs);
welcomeUser(Email, user);
};
};
var saveUser = function(Db, attrs) {
...
};
var welcomeUser = function(Email, user) {
...
};
Run Code Online (Sandbox Code Playgroud)
我不明白为什么不被认为是外部依赖(因此,不纯)对saveUser或的调用welcomeUser.
我知道从函数/ IO的角度来看,signUp总是返回"相同"(相当的)有线函数,但对我来说这感觉很奇怪.
我很难理解为什么
function multiplyBy(times){
return value => value * times;
}
const fiveTimes = multiplyBy(5);
fiveTimes(10); …Run Code Online (Sandbox Code Playgroud)