Safari Books Online is a digital library providing on-demand subscription access to thousands of learning resources.
Als Aufrufausdruck bezeichnet man JavaScripts Syntax für den Aufruf (oder die Ausführung) einer Funktion oder Methode. Sie beginnt mit einem Funktionsausdruck, der die aufzurufende Funktion bezeichnet. Auf den Funktionsausdruck folgen eine öffnende Klammer, eine kommagetrennte Liste mit null oder mehr Argumenten und eine schließende Klammer. Ein paar Beispiele:
f(0) // f ist der Funktionsausdruck; 0 der Argumentausdruck. Math.max(x,y,z) // Math.max ist die Funktion; x, y und z sind die Argumente. a.sort() // a.sort ist die Funktion; es gibt keine Argumente.
Wird ein Aufrufausdruck ausgewertet, wird zuerst der Funktionsausdruck ausgewertet. Anschließend werden die Argumentausdrücke ausgewertet, um eine Liste mit Argumentwerten zu erstellen. Ist der Wert des Funktionsausdrucks kein aufrufbares Objekt, wird ein TypeError ausgelöst. (Alle Funktionen sind aufrufbar. Host-Objekte können auch aufrufbar sein, wenn sie keine Funktionen sind. Diesen Unterschied sehen wir uns in Aufrufbare Objekte an.) Anschließend werden die Argumentwerte der Reihe nach den Parameternamen zugewiesen, die bei der Definition der Funktion angegeben wurden, bevor der Codeinhalt der Funktion ausgeführt wird. Nutzt die Funktion eine return-Anweisung, um einen Wert zu liefern, wird dieser Wert zum Wert des Aufrufausdrucks. Andernfalls ist der Wert des Aufrufausdrucks undefined. Vollständige Informationen zum Funktionsaufruf, einschließlich einer Erklärung dessen, was geschieht, wenn die Anzahl von Argumentausdrücken nicht der Anzahl an Parametern in der Funktionsdefinition entspricht, finden Sie in Chapter 8.
Jeder Aufrufausdruck enthält ein Klammernpaar und einen Ausdruck vor diesen Klammern. Ist dieser Ausdruck ein Eigenschaftszugriffsausdruck, bezeichnet man den Aufruf selbst als einen Methodenaufruf. Bei Methodenaufrufen wird das Objekt oder Array, das der Gegenstand des Eigenschaftsaufrufs ist, zum Wert des this-Parameters für die Ausführung des Codeinhalts der Funktion. Das ist das Fundament des objektorientierten Programmierparadigmas, bei dem Funktionen (die unter diesem Paradigma eben als »Methoden« bezeichnet werden) auf dem Objekt operieren, dessen Teil sie sind. Mehr dazu finden Sie unter Chapter 9.
Aufrufausdrücke, die keine Methodenaufrufe sind, nutzen üblicherweise das globale Objekt als Wert des this-Schlüsselworts. In ECMAScript 5 erhalten Funktionen, die im Strict-Modus definiert wurden, für this statt des globalen Objekts den Wert undefined. Mehr Informationen zum Strict-Modus finden Sie unter »use strict«.