簡體   English   中英

Javascript函數式編程

[英]Javascript Functional Programming

我對為什么一個人向我退還總和而另一個人只是在退還清單感到困惑。

這將正確返回輸出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,返回的值不會存儲在任何地方,最后您只是打印var arrays ,即[1,2,3,4]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM