在Javascript中使用回调函数计算数组的平均值

在Javascript中使用回调函数计算数组的平均值,javascript,callback,sum,average,Javascript,Callback,Sum,Average,我遇到了一个求和和数组平均值的问题。我的平均成绩是0。 我真的看不出问题出在哪里: var a = [10,20,30,40] var sum = 0 var avg = 0 function sumUP(a) { for (var i=0; i<a.length; i++){ sum += a[i]; avg = (sum/a.length); } } function display(avg, callback) { document.writ

我遇到了一个求和和数组平均值的问题。我的平均成绩是0。 我真的看不出问题出在哪里:

var a = [10,20,30,40]
var sum = 0
var avg = 0
function sumUP(a) {
   for (var i=0; i<a.length; i++){
      sum += a[i];
      avg = (sum/a.length);
   }
}
function display(avg, callback) {
   document.write("Average of array is " + avg)
   callback(average);   
}
display(avg, sumUP);
var a=[10,20,30,40]
var总和=0
var平均值=0
功能汇总(a){

对于(var i=0;i您应该编写如下代码

function sumUP(a) {
for (var i=0; i<a.length; i++){
sum += a[i];
}
avg = (sum/a.length);
}
功能汇总(a){

对于(var i=0;i不是分配给全局变量,而是应该让
汇总
返回计算出的平均值,以便可以在
文档中使用。编写
。这是函数的目的之一-封装其他函数可以使用的功能和返回值,而不会产生不必要的副作用。您还需要在显示平均值之前先计算平均值。(在计算平均值之前先显示平均值,这当然会使平均值显示为
0

您还应该注意不要使用单字母变量名,这是很难理解的(不仅对于阅读您代码的其他人,而且对于您,当您稍后再讨论它时)

const数组=[10,20,30,40];
功能汇总(arr){
设和=0;
对于(变量i=0;i
查看:

const arr=[10,20,30,40]
const sum=arr.reduce((a,b)=>a+b,0)
平均常数=总和/阵列长度
功能显示(平均值){
document.write(“数组的平均值为”+avg)
}

显示(平均值);
您根本不需要将
avg
传递给
回调
显示
功能:

var a=[10,20,30,40];
var总和=0;
var平均值=0;
函数汇总(){

对于(var i=0;i,这里是代码的修复程序

var a = [10,20,30,40]
var sum = 0
var avg = 0
function sumUP(a) {
   for (var i=0; i<a.length; i++){
      sum += a[i];
   }
   avg = (sum/a.length);
}
function display(callback) {
    callback(a);
    document.write("Average of array is " + avg);
}
display(sumUP);
var a=[10,20,30,40]
var总和=0
var平均值=0
功能汇总(a){

对于(var i=0;iYou在调用设置avg的函数之前显示avg的值(调用中传递的内容存在问题)。