小编smi*_*oli的帖子

为什么这个纯函数的实现不被认为具有外部依赖性?

我很喜欢这个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)

javascript functional-programming pure-function

7
推荐指数
2
解决办法
801
查看次数