为什么Date.now()是非纯函数?

时间:2019-06-26 18:19:56

标签: javascript reactjs

我们知道,纯函数不依赖并且不会在变量范围之外修改变量的状态。我对此有一个明确的认识,即如果一个函数依赖于某些参数,它将变成非纯函数,但是为什么Date.now()Math.random()被称为非纯函数。有人可以向我解释其背后的基本知识吗?

2 个答案:

答案 0 :(得分:2)

纯功能:

  1. 请勿依赖或修改外部状态
  2. 对于相同的输入每次都返回相同的结果

您提到的两个函数都违反了#2-每次调用它们都返回不同的值。实际上,由于访问和/或修改全局状态来执行工作,他们还违反了#1。

答案 1 :(得分:1)

您的定义不完整,例如https://en.wikipedia.org/wiki/Pure_function

  

具有以下属性的函数:

     
      
  1. 对于相同的参数,其返回值相同
  2.   
  3. 它的评估没有副作用
  4.   

Date.now()Math.random()都不符合定义的第一点,因此它们不是纯函数。