以函数式编程风格计算数字



我试图理解函数式编程的概念。我只是在这里使用javascript来理解它的概念

通常我们会以这种方式数到 10:

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

这是函数式编程等效的吗?

var a = 1;
var n = 10;
function counter(){
  console.log(a);
  if(a<n){
    counter(++a);
  }
}
counter();

您可以使用递归来获取(更多)函数式编程解决方案:

(function counter(a, n){
    console.log(a);
    a < n && counter(a+1, n);
})(1, 10);

这是我

的看法。

Array(n).fill()用于生成一系列要迭代的n元素。

.forEach(...)遍历元素,并根据元素的index和外部提供的b("基")值执行工作。

const counter = (n, b) => Array(n).fill().forEach((_, index) => console.log(index + b));
counter(10, 1);

您不能在函数式编程中更改可变数据。把它想象成在学校做数学,当你必须解决一个变量时。无论您做什么,该变量都将始终具有相同的值。在您的示例中,您正在更改该变量的值。要进行函数式编程,该变量在函数结束时需要具有与开始时相同的值。

var a = 1;
var n = 10;
counter(a,n);
function counter(num, limit){
  if (num > limit) 
    return;
  console.log(num);
  counter(num+1, limit);
}

将被视为函数式编程,因为 a 和 n 仍然具有相同的值,因此您没有更改可变数据。

函数式编程

最新更新