Funktionen

Funktion definieren

const squareV1 = function(x) {
    return x * x;
}

function squareV2(x) {
    return x*x;
}

const squareV3 = x => x * x;

Gültigkeitsbereiche

let     m = 10      // block scope
const   n = 10      // constant with block scope
var     p = 10      // variable with function scope

Globale Variablen

  • Ausserhalb von Funktionen definiert
  • In Funktionen kein const, let, var
  • Gültigkeitsbereich möglichst einschränken
result = 1 + 2

## Parameter

Parameter sind standardmässig undefined, somit müssen nicht alle Parameter gesetzt werden.

Rest-Parameter

function max ([...numbers]) {
    let result = -Infinity;
    for (let number of numbers) {
        if (number > result) {
            result = number;
        }
    }

    return result
}

console.log(max(4, 1, 9, -2))

Alternative

function max () {
    let result = -Infinity;
    for (let number of arguments) {
        if (number > result) {
            result = number;
        }
    }

    return result
}

console.log(max(4, 1, 9, -2))

Dekorieren

function trace (func) {
    return (...args) => {
        console.log(args)
        return func(...args)
    }
}

let factorial = (n) => (n <= 1) ? 1 : n * factorial(n-1)

factorial = trace(factorial)

console.log(factorial(3))