簡體   English   中英

JS中的高階函數

[英]Higher-Order Functions in JS

我正在學習JavaScript。 我有一個問題。 本書Eloquent JavaScript中的以下代碼:

function forEach(array, action) {
    for (var i = 0; i < array.length; i++)
        action(array[i]);
}

var numbers = [1, 2, 3, 4, 5],
    sum = 0;

forEach(numbers, function(number) {
    sum += number;
});

console.log(sum); 

這段代碼中發生了什么? 在調用forEach函數時,如何確定數字是多少? 它如何從數字數組中提取數字?

這段代碼中發生了什么?

這是您的forEach函數工作方式的描述:

  1. 您的forEach函數接受兩個參數,即數組和函數
  2. 它設置了一個for循環來遍歷數組
  3. 然后,對於數組中的每個元素,它將調用action(array[i]) ,后者將調用傳入的函數並將其傳遞給一個數組元素。 array[i]從數組中獲取下一項, action(array[i])調用傳入的函數,並從數組中傳遞該項。

然后,當您這樣調用時:

forEach(numbers, function(number) {
    sum += number;
});

它將為您在numbers數組中的每個數字調用一次傳遞給您的函數,並且在調用該函數時,它將從數組傳遞一個數字作為函數的第一個參數。

讓人困惑的一件事是傳遞給forEach函數中的number參數只是為該函數的第一個參數分配的名稱。 它可以命名為任何您想要的名稱,並且與forEach()函數定義中使用的任何名稱無關。 函數參數的聲明只是分配給每個參數的標簽,使您更易於使用它們。 您也可以這樣做:

forEach(numbers, function(whateverYouWant) {
    sum += whateverYouWant;
});

在調用forEach函數時,如何確定數字是多少?

您的for循環一次遍歷整個數組一個數字,並為數組中的每個數字調用一次回調函數。

它如何從數字數組中提取數字?

array[i]是從數組中提取數字的位置。 這是用於從其中陣列中檢索第i個值正常數組索引i從變化0至陣列減去1的長度。

暫無
暫無

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

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