Вопрос о передаче метода JavaScript

#javascript #methods

Вопрос:

У меня есть небольшой вопрос о приведенном ниже коде JavaScript:

 <script>
var numbers1 = [56, 234, 6, 5, 63, 265] ; 
var sum = numbers1.reduce(myFunction) ; 

document.getElementById("demo1").innerHTML = "The sum is "   sum ; 

function myFunction(total, value){
return total   value ; 
}
</script>`
 

Я не знаю, почему этот код генерирует сумму всех элементов в массиве, потому что мы только передаем определение myFunction() для уменьшения() без указания того, что входит в переменные «всего» и «значение».
Кроме того, что входит в эти переменные соответственно?

Заранее большое вам спасибо за вашу помощь !

Комментарии:

1. Потому .reduce что выполняется myFunction для каждого элемента массива и повторно использует результат предыдущих вызовов (в total параметре)

2. Большое вам спасибо 🙂

Ответ №1:

По умолчанию вызов reduce() с помощью функции обратного вызова передает эти две переменные (наиболее известные как накопитель и текущее значение) функции обратного вызова. Это имеет место здесь: myFunction получает накопитель и текущее значение на каждой итерации. Даже если вы последовательно вложите несколько функций myFunction , результат будет одинаковым:

 var numbers1 = [56, 234, 6, 5, 63, 265];
var sum = numbers1.reduce(myFunction);

document.getElementById("demo1").innerHTML = "The sum is "   sum;

function myFunction(total, value) {
  return myMiddleFunction(total, value);
}

function myMiddleFunction(total2, value2) {
  return myInnerFunction(total2, value2);
}

function myInnerFunction(total3, value3) {
  return total3   value3
} 
 <p id="demo1"></p> 

Комментарии:

1. Это хороший ответ с подробным объяснением. Я бы отредактировал его и удалил всю вложенную часть — это добавляет ненужную сложность.

2. Спасибо вам за пример кода и объяснение, ребята. Я действительно ценю вашу помощь 🙂

3. Кстати, есть ли учебный материал или ресурс, где я могу изучить этот уровень деталей, которые вы можете порекомендовать?

4. Я думаю, что в MDN есть все, что вам нужно. Их документация очень поучительна.

5. @GuyLevinger оператор спрашивает, откуда аккумулятор и текущее значение получают свои значения. Вложенная часть помогает прояснить это.