Funktionsdeklaration vs. Funktionsausdruck in JavaScript

Funktionsdeklaration vs. Funktionsausdruck in JavaScript

In JavaScript gibt es zwei Wege, Funktionen zu deklarieren: den Funktionsausdruck und die Funktionsdeklaration. Der erste lässt sich in einer Variablen ablegen, die zweite überall im Code wiederverwenden. Vertraut sind dir vermutlich vor allem Funktionsdeklarationen – mir ging es lange genauso –, aber es lohnt sich zu wissen, dass es auch anders geht.

Dieser Artikel kann noch aktualisiert werden.

Funktionsdeklaration

Anders als ein Funktionsausdruck lässt sich eine per Funktionsdeklaration erstellte Funktion schon aufrufen, bevor sie deklariert wurde: Der Interpreter sammelt Variablen und Funktionsdeklarationen ein, bevor er den Rest deines Skripts durchgeht. Eine deklarierte Funktion kannst du also später im Code aufrufen – dafür braucht sie allerdings einen Namen.

javascript
function addition(a, b) {
    return a + b;
};
var calcul= addition(2, 5) ;

Funktionsausdruck

Ein Funktionsausdruck ist eine Funktion, die wie eine Variable erstellt, gespeichert und behandelt wird. In der Regel hat sie keinen Namen, deshalb spricht man von anonymen Funktionen. Sie liegt in einer Variablen und lässt sich wie jede andere Funktion aufrufen. Beachte aber: Verarbeitet wird sie erst, wenn der Interpreter deines Browsers die Deklaration liest. Du kannst sie also nicht vorher aufrufen, und jeder Code bis zu dieser Stelle kann beeinflussen, was innerhalb der Funktion passiert.

javascript
var addition = function(a, b) {
    return a + b;
};
var calcul = addition(2, 5) ;

Immediately-Invoked Function Expression

Meist IIFE genannt. Alle Variablen, die in dieser anonymen Funktion deklariert werden, bleiben von gleichnamigen Variablen anderer Skripte abgeschottet. Dahinter steckt der Gültigkeitsbereich von Variablen, auf Englisch Scope. Hier ein Beispiel für eine IIFE:

javascript
var addition = (function(){
  var a = 10;
    var b = 20;
    return a + b;
}());
  • Die Klammern um unsere Funktion sorgen dafür, dass sie als Ausdruck behandelt wird.
  • Das Klammerpaar am Ende, (), weist den Interpreter an, unsere Funktion sofort auszuführen.

Am häufigsten kommt das zum Einsatz, wenn ein neues Skript beginnt, um den gesamten Code darin abzuschotten.

Wann sind anonyme Funktionsausdrücke sinnvoll?

Sie eignen sich für Code, der nur ein einziges Mal laufen soll, statt von anderen Teilen des Skripts mehrfach aufgerufen zu werden. Einen anonymen Funktionsausdruck nutzt du:

  • um Konflikte zwischen zwei Skripten zu vermeiden, die dieselben Variablennamen verwenden wie deines.
  • als Argument beim Aufruf einer Funktion (um deren Wert zu berechnen);
  • um eine Aufgabe auszuführen, sobald ein Ereignis eintritt.
  • um einer Eigenschaft eines Objekts einen Wert zuzuweisen.

···

JavaScript

Damien Flandrin Webentwickler seit 2010, Gründer von Gekkode und Email Impact. Jeder Artikel wird vor der Veröffentlichung an einem echten Projekt getestet. Kontakt
Newsletter

Neue Tests, Tutorials und Projekte, per E-Mail.

Reproduzierbare Tests, versionierter Code, datierte Ergebnisse. Niemals Spam.