FP中纯函数的含义是什么

时间:2019-12-25 18:07:06

标签: javascript

我是JS的新手,正在学习函数编程和纯函数。但是我无法真正理解“函数只有在给定相同输入的情况下始终会产生相同的输出,才是纯函数”。问题是,这在现实世界的程序中有什么帮助。我经常面对这个例子:

function add(num1)
{
return console.log(num1 + Math.random());
}

在现实世界中,我只是看不到“提供相同的输入将始终产生相同的输入”的观点。

1 个答案:

答案 0 :(得分:0)

是的,这个问题是广泛且基于观点的。尽管我会尝试回答一些问题:

Pure functions 主要是来自的好处:

  • 可测试,因为您可以基于给定的输入 预测(知道之前)预期的输出 ;没有没有副作用(例如random),没有I / O(例如console.log
  • 可以在不成为管理任何状态的对象的一部分的情况下实现(例如,在某些语言中,例如 static 实用程序功能或在实用程序类中) )
  • 可以链接在一起或嵌套,就像数学公式(例如total = sum(product(quantity_a, price_a), product(quantity_b, price_b))

纯函数紧密相关

纯函数实际上是在以下情况下应用

  • 数学和统计计算(如加,减,窦,最大,中位数)
  • 字符串操作(例如concat,trim,substring,regex,replace)

纯函数是否符合的情况下:

  • 需要随机性(例如加密,唯一ID 生成
  • 查询数据库(取决于表中记录的状态
  • 将数据写入文件(取决于磁盘的状态