我们知道,纯函数不依赖并且不会在变量范围之外修改变量的状态。我对此有一个明确的认识,即如果一个函数依赖于某些参数,它将变成非纯函数,但是为什么Date.now()
或Math.random()
被称为非纯函数。有人可以向我解释其背后的基本知识吗?
答案 0 :(得分:2)
纯功能:
您提到的两个函数都违反了#2-每次调用它们都返回不同的值。实际上,由于访问和/或修改全局状态来执行工作,他们还违反了#1。
答案 1 :(得分:1)
您的定义不完整,例如https://en.wikipedia.org/wiki/Pure_function
具有以下属性的函数:
- 对于相同的参数,其返回值相同
- 它的评估没有副作用
Date.now()
和Math.random()
都不符合定义的第一点,因此它们不是纯函数。