一个函数的返回结果只依赖于它的参数,而且在执行过程里面没有反作用,咱们就把这个函数叫作纯函数。数组
纯函数很是“靠谱”,执行一个纯函数你不用担忧它会干什么坏事,它不会产生不可预料的行为,也不会对外部产生影响。函数
const a = 1 const foo = (b) => a + b foo(2) // => 3
函数依赖外部a的值 ,不是纯函数。spa
const counter = { x: 1 } const foo = (obj, b) => { obj.x=2; return obj.x + b } foo(counter, 2) // => 4 counter.x // => 2
注意:函数内部 修改了 obj.x=2 ,对外部对象 counter产生影响了, 有反作用。不是纯函数code
const foo = (b) => { const obj = { x: 1 } obj.x = 2 return obj.x + b }
若是是函数内部本身定义的对象,对外部没影响 仍是纯函数。对象
数组slice是纯函数 ,不影响原数组 ,d3
splice不是纯函数,直接修改原数组了。co