· 相同的输入永远会得到相同的输出,并且没有任何可观察的副作用

· 纯函数类似于数学中的描述输入和输出之前的函数关系 y=f(x)

image.png

loadsh 是一个纯函数库

// slice 和 splice

  1. const array = [1,2,3,4,5,6,7];
  2. console.log(array.slice(0,3))
  3. console.log(array.slice(0,3))
  4. console.log(array.slice(0,3)) // slice(开始的下标,结束的下标,不包含当前下标)
  5. console.log(array.splice(0,3));
  6. console.log(array.splice(0,3));
  7. console.log(array.splice(0, 3)); // splice(开始的下标,截取的个数)
  8. // slice 每次输出的结果是一样的 [ 1, 2, 3 ] 是纯函数
  9. // splice 会改变原数组,每次输出的结果不一样 不是纯函数
  1. // 纯函数demo
  2. const getSum = (n , n1) => n + n1;
  3. console.log(getSum(1, 2));
  4. console.log(getSum(1, 2));
  5. console.log(getSum(1, 2));

· 函数式编程不会保留计算过程中间的结果,所以变量是不可变的(无状态的)

· 可以划分小颗粒度,把一个函数的执行结果交给另外一个函数处理