Skip to content

纯函数

  • 仅针对输入参数进行操作

1.仅读参数

var z = 10;
function add(x, y) {
  return x + y;
}

2.返回常量

function justNum() {
  return 10;
}
  • 纯函数对于给定相同的输入,总是产生相同的输出。
  • 纯函数不能修改任何外部变量
  • 纯函数没有副作用(纯函数应是可预测的)

特性

不可变性

var x = 1;
x = x + 1;
x;  // 2

在命令式编程中,它的意思是:获取当前x的值然后加 1并将结果放回到x中。 那么,在函数式编程中x = x + 1是非法的。

在函数式编程中没有变量

JS中的循环:

var acc = 0;
for (var i=0; i<=10; i++) {
  acc += i;
}
console.log(acc); // 55


function sumRange(start, end, acc) {
  if (start > end) {
    return acc;
  }
  return sumRange(start + 1, end, acc + start);
}
console.log(sumRange(1, 10, 0));

注意函数式方法中,递归是怎样通过调用自己时使用新的起始位置(start + 1) 和新的累加结果(acc + start)达到和for循环相同的效果的。 它没有修改旧的值。取而代之的是他使用了旧值的计算结果。

共 20 个模块,1301 篇 Markdown 文档。