Allmänt

Funktioner är ett spännande kapitel i JavaScript. Även om allt är objekt så är JavaScript ett funktionsorienterat språk, men mer om det senare. Först tar vi grunderna.

Funktioner kan skapas på olika sätt, jämför följande sätt att använda och skapa en funktion.

function square (x) {           // Traditionellt sätt,
  return x*x;                   // att jämföra med C/C++, PHP.  
}
val = square(x);

let square = function (x) {     // Funktions literal / Funktion expression,
  return x*x;                   // funktionen tilldelas en variabel
}
val = square(x);

element.onclick = function () {  // Namnlös funktion som används
  alert('Hello');                // som eventhanterare.
}

element.addEventListener("click", function () {
  alert('Hello');                // Variant på namnlös funktion som
});                              // eventhanterare som skickas som
                                 // parameter i en funktion.

Funktioner har en argumentlista. Om man anropar funktionen med färre argument än listan så får de kvarvarande argumenten värdet undefined.

function sum(a, b, c) {
    return a + b + c;
}

sum(1, 2, 3); // returnerar 6
sum(1, 2);    // returnerar NaN

Man kan ge “default”-värden på ett argument med hjälp av operatorn ||. Studera följande funktion.

function sum(a, b, c) {
    a = a || 0;
    b = b || 0;
    c = c || 0;
    return a + b + c;
}

sum(1, 2, 3); // returnerar 6
sum(1, 2);    // returnerar 3

Man kan även hantera en variabel argument-lista med identifieraren arguments som finns tillgänglig inuti funktionen.

function sum() {
  let i, sum = 0;

  for(i = 0; i < arguments.length; i++) {
    sum += arguments[i];
  }

  return sum;
}

sum(1, 2, 3);           // returnerar 6
sum(1, 2, 3, 4, 5, 6);  // returnerar 21

Den inbyggda variabeln arguments är en array som innehåller samtliga argument som skickats till funktionen.