Variative function

apply usage

by Ivan Gerasimenko

JavaScript

function log(msg) { console.log(msg); }
// вариативная ф-ия (переменной арности)
// f(x1, ... , xn), где n - любое целое положительное больше 1
function average() {
  var args = [].slice.call(arguments);
  var sum = 0;
  for(var i = 0; i<arguments.length; i++) {
    sum += args[i];
  }
  return sum/args.length;
}

// ф-ия фиксированной арности
function averageOfArray(arr) {
  return average.apply(null, arr);
}

// и снова переменной
function averageVar() {
    return averageOfArray(arguments);
}

log('вариативная ф-ия');
log(average(1,2,3,4));
log('фиксированной арности');
log(averageOfArray([1,2,3,4]));
log('снова вариативная ф-ия');
log(averageVar(1,2,3,4));