Вы можете не только вернуть функцию, которую вы передали в другую функцию в качестве переменной, вы также можете использовать ее для вычисления внутри, но для определения ее снаружи.Смотрите этот пример:
function calculate(a,b,fn) {
var c = a * 3 + b + fn(a,b);
return c;
}
function sum(a,b) {
return a+b;
}
function product(a,b) {
return a*b;
}
document.write(calculate (10,20,sum)); //80
document.write(calculate (10,20,product)); //250