molily: Syntax

Beitrag lesen

Hallo,

Bitte kann mir jemand die Syntax von
function( ) { document.getElementById( "keyword" ).onkeyup = doSearch; }
erklären.

Das ist eine sogenannte Function-Expression.

Man kann Funktionen auf verschiedene Art notieren. Und da Funktionen nichts anderes als Objekte sind, die an anderen Objekten als Eigenschaften bzw. Methoden hängen, kann man Funktionsobjekte auch überall speichern - genauso wie z.B. eine String-Variable.

function ( …Parameter… ) { …Körper… } ist einfach ein Ausdruck, der ein Funktion-Objekt zurückgibt. Er kann überall notiert werden, wo Ausdrücke erlaubt sind, zum Beispiel:

alert(function () {});
alert( typeof(function () {}) );

Man kann das Ergebnis des Ausdrucks dann z.B. in irgendeiner Variable bzw. Eigenschaft speichern.

var meinefunktion = function () { window.alert("Hallo Welt!"); };
alert(typeof meinefunktion);

Auf globaler Ebene, also außerhalb von Funktionen, sind folgende Schreibweisen identisch:

function meinefunktion (param) {
   alert("Hallo Welt!");
}

var meinefunktion = function (param) {
   alert("Hallo Welt!");
};

var meinefunktion = new Function(param, 'alert("Hallo Welt!");');

Das von dir gefundene function () { document.getElementById( "keyword" ).onkeyup = doSearch; } ist also nur ein bloßer Ausdruck. Wenn man den in einer Zeile als Expression Statement notiert, macht er überhaupt nichts:

function () { document.getElementById( "keyword" ).onkeyup = doSearch; };

Hat keinerlei Wirkung. Genauso wie jeder andere Ausdruck (ohne den Zuweisungs-Operator):

1 + 1;
Tut für sich genommen auch nichts.

Function-Expressions machen also nur Sinn, wenn man mit dem Ergebnis des Ausdrucks etwas anfängt, z.B. das Function-Objekt an eine andere Funktion übergibt oder es in einer Variable speichert.

Relativ üblich ist:

window.onload = function () {
   …mach was…
};

Das kann man auch ohne Function-Expression schreiben, dann nutzt man ein gewöhnliches Function-Statement:

function init () {
   …mach was…
}
window.onload = init;

Soweit erst einmal – Function-Expressions erfüllen noch viele andere Aufgaben. Allerdings sind sie nicht immer nötig, wenn sie verwendet werden, meistens reicht das gewöhnliche function Funktionsname () {} aus, also das Statement, nicht die Expression.

Mathias