function ·
Arrow Functions ·
Scope ·
Closures ·
Parameter ·
IIFE
Funktionen sind die Bausteine jeder JavaScript-Anwendung. Dieses Cheatsheet erklärt Deklarationen, Arrow Functions, Scope, Closures und fortgeschrittene Techniken.
Funktionen sind in JavaScript erstklassige Bürger. Es gibt zwei Hauptwege, sie zu definieren: Funktionsdeklarationen (werden gehoist) und Funktionsausdrücke (kein Hoisting).
| Typ | Syntax | Hoisting |
|---|---|---|
| Deklaration | function name() { } | Ja |
| Ausdruck | const f = function() { } | Nein |
| Arrow Function | const f = () => { } | Nein |
| Named Function Expression | const f = function name() { } | Nein |
Arrow Functions sind eine kürzere Syntax für Funktionsausdrücke. Sie haben kein eigenes this und eignen sich besonders für Callbacks und funktionale Programmierung.
| Syntax | Beschreibung |
|---|---|
| () => wert | Kein Parameter, implizites Return |
| x => x * 2 | Ein Parameter, implizites Return (Klammern optional) |
| (a, b) => a + b | Mehrere Parameter, implizites Return |
| () => { return wert; } | Kein Parameter, explizites Return (Block) |
| (a, b) => { const sum = a + b; return sum; } | Mehrere Anweisungen im Block |
return und die geschweiften Klammern. Für Objekte brauchen Sie zusätzliche Klammern: () => ({ key: value }).
Scope definiert die Sichtbarkeit von Variablen. JavaScript hat Global Scope, Function Scope (var) und Block Scope (let, const).
| Schlüsselwort | Scope | Hoisting | Neu zuweisbar |
|---|---|---|---|
| var | Function Scope | Ja (undefined) | Ja |
| let | Block Scope | Ja (temporal dead zone) | Ja |
| const | Block Scope | Ja (temporal dead zone) | Nein (Konstante) |
| (kein) | Global Scope | Ja | Ja |
const für Werte, die sich nicht ändern, und let für veränderbare Variablen. Vermeiden Sie var – es führt oft zu unerwarteten Verhalten durch Function Scope.
Closures entstehen, wenn eine innere Funktion auf Variablen einer äußeren Funktion zugreift, auch nachdem die äußere Funktion bereits zurückgekehrt ist. Sie "erinnern" sich an ihren lexikalischen Scope.
| Anwendung | Beschreibung |
|---|---|
| Private Variablen | Daten kapseln und vor externem Zugriff schützen |
| Function Factory | Funktionen mit vorkonfigurierten Parametern erzeugen |
| Event Handler | Zustand in Event-Callbacks speichern |
| Currying | Funktionen schrittweise mit Argumenten versorgen |
Parameter in JavaScript sind flexibel. Sie können Default-Werte setzen, Rest-Parameter für variable Argumente verwenden und Destructuring für Objekte und Arrays nutzen.
...rest) sammeln alle übrigen Argumente in einem Array. Die Spread-Syntax (...array) macht das Gegenteil – sie entpackt ein Array in einzelne Werte.
IIFE (Immediately Invoked Function Expression) ist eine Funktion, die sofort nach ihrer Definition ausgeführt wird. Sie wird verwendet, um einen neuen Scope zu erzeugen und globale Variablen zu vermeiden.
| Zweck | Beschreibung |
|---|---|
| Scope-Isolation | Verhindert Pollution des globalen Scope |
| Modul-Muster | Erzeugt private Variablen und Methoden |
| Initialisierung | Führt Code einmalig beim Laden aus |
| Async-Aufrufe | Kombination mit async/await möglich |
import/export) ersetzt. Sie sind aber immer noch nützlich für Skripte, die einen isolierten Scope benötigen oder älteren Code unterstützen.
function
() =>
let/const
Closure
...rest
IIFE
const f = (a, b) => a + b; ·
function sum(...args) { return args.reduce((a,b) => a+b); }