#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 оператор спрашивает, откуда аккумулятор и текущее значение получают свои значения. Вложенная часть помогает прояснить это.