我按照本指南开始学习使用Javascript的函数式编程:https://medium.com/@cscalfani/so-you-want-to-be-a-functional-programmer-part-1-1f15e387e536#.iynj38h83
它将Pure函数定义为:
以下功能违反了合同:
function notPure(data) {
let ts = new Date();
return md5(data + ts);
}
但以下是Pure:
function pureFunction(data, ts) {
return md5(data + ts);
}
假设我理解正确,重点是什么?我对这个领域的年轻人很年轻。我还不明白这是如何有用的。在函数中包含时间戳是否使函数有状态并打破纯度?
强制在其他地方创建这些值并将其作为参数传递给纯函数有什么好处?
答案 0 :(得分:3)
程序将始终具有状态。总是。纯函数式编程的想法是将状态(尽可能地)推送到程序的 edge :例如,扫描一行用户输入,在其上执行一堆纯函数,并将输出吐回控制台。
这有很多好处:
因此,对于您的示例函数,您将如何测试不纯的版本?纯版本很简单,你传递一个日期并断言它返回预期的输出。