У вас есть несколько вещей, которые здесь перепутаны.У вас есть глобальная переменная bob
, а также bob
в качестве аргумента функции.Кроме того, у вас есть массив результатов, который локально для функции foo
называется resultArr
, но вы не назначаете его нигде при вызове функции foo
.
Попробуйте вместо этого следующий код:
var bob = [10,30,50,20,8];
var foo = function(arrayOfNumbers){
var resultObj = {
max: 0,
min: 0,
average: 0,
sum: 0
};
resultObj.max = Math.max.apply( null, arrayOfNumbers); // Get the max value.
resultObj.min = Math.min.apply( null, arrayOfNumbers); // Get the min value.
for( var i = 0; i < arrayOfNumbers.length; i++ ){
resultObj.sum += arrayOfNumbers[ i ];
}
resultObj.average = sum / l;
return resultObj;
}
// Call the function
var theResult = foo(bob);
document.getElementById('max').innerHTML = "Max value: "+theResult.max;
Вот описание изменений, которые я внес в ваш код, и почему:
Iубедился, что имена ваших переменных не конфликтуют.Это должно помочь вам увидеть, где каждая переменная используется и как они связаны друг с другом.bob
содержит ваши номера.Вы передаете bob
функции foo()
.Внутри foo
номера теперь называются v
.Это означает, что у вас также могут быть frank
, joe
и tom
, и вы можете назвать foo
на всех них.arrayOfNumbers
является локальной переменной foo
.
Я изменил resultArr
с массива на объект.Объект имеет больше смысла, потому что вы можете назначать метки значениям.Таким образом, теперь максимальное значение можно получить по .max
вместо [0]
.Я также показал, как объект результата называется resultObj
внутри foo
, но получает присвоение theResult
за пределами foo.Затем вы можете обратиться к theResult.min
, theResult.max
и theResult.average
.
Я немного прибрался, исправив отступ и переместив функцию наверх, чтобы улучшить читаемость.
Надеюсь, это поможет вам увидеть, что здесь происходит!