特点:
- 函数的返回结果只依赖于传入参数;
- 函数的执行过程里面没有副作用:不会改变原始输入参数,或是外部的环境 。
const a = 1
const foo = (b) => a + b
foo(2) // => 3
这里的 foo 依赖于外部变量 a,所以不是纯函数
const foo = (a,b) => a + b
这里的 foo 返回结果只跟传入参数有关,所以是纯函数
常见 API:
splice()
: 会改变到原数组,不是纯函数;slice() \ concat()
: 不会改变原数组,并且返回结果只跟输入参数有关,是纯函数;Math.random()
: 随机生成数,没有参数,但不会固定返回结果,不是纯函数;Date.now()
: 跟外部的实时时间有关,不是纯函数。