纯函数
- 仅针对输入参数进行操作
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循环相同的效果的。 它没有修改旧的值。取而代之的是他使用了旧值的计算结果。
