Javascript 函数式编程

Javascript Functional Programming

本文关键字:编程 函数 Javascript      更新时间:2023-09-26

我很困惑为什么一个人向我返回总和,而另一个人只是返回列表。

这将正确返回输出10

function sum(){
     var arrays = [1,2,3,4].reduce(function (total, num) {
       return total + num;
   })
    console.log(arrays);
}

但是,这将返回 [1, 2, 3, 4] 而不是 10。

function sum(){
    var arrays = [1,2,3,4];
    arrays.reduce(function (total, num) {
      return total + num;  
  })
  console.log(arrays);
}

起初我认为这是我声明var arrays的地方,所以我尝试将其移出函数,也尝试不将其声明var。但是对于这个,我仍然没有得到 10。

我没有得到正确的输出,两者之间有什么区别?

谢谢。

您缺少由reduce返回的作业:

function sum() {
  var arrays = [1, 2, 3, 4];
  arrays = arrays.reduce(function(total, num) {
  //-----^
    return total + num;
  })
  console.log(arrays);
}

在第二个函数中,您将忽略 reduce 方法的返回值。它将正确计算总和,但您不使用它。

将结果分配给变量,如第一个函数所示:

array = arrays.reduce(function (total, num) {
  return total + num;  
});

但是,如果结果与数组所在的变量相同,则会使代码有些混乱。您应该避免在代码中间使用变量更改含义,以便对结果使用不同的变量:

function sum(){
    var arrays = [1,2,3,4];
    var result = arrays.reduce(function (total, num) {
      return total + num;
  });
  console.log(result);
}

旁注:术语函数式编程用于基于函数表达式而不是变量状态的语言。仅仅使用函数并不意味着你正在使用函数式编程。

首先,当函数返回值时,即 10它存储在var arrays中并且您正在打印它。

而第二,您声明了var arrays并为其指定值,[1,2,3,4]然后调用 funtion,返回的值不会存储在任何地方,最后您只需打印[1,2,3,4] var arrays