Funktionsaufruf
bernd
- javascript
0 Bernd
Guten Morgen,
in welchem Kontext verwndet man eine solche Funktionsdeklaration ? Ist mir jetzt schon ein paar mal begegnet und komme einfach nicht drauf.
(function() {
// Funktionsinhalt
}
lg
Bernd
hoppla, hab ein paar Klammern vergessen:
(function() {
// Funktionsinhalt
})();
und warum kommt da noch ein "();" hinterher?
Hallo Bernd,
(function() {
// Funktionsinhalt
})();
das ist eine anonyme Funktion, die sofort ausgeführt wird, in dem Klammerpaar am Ende können noch Parameter übergeben werden. Ich verwende dieses Konstrukt, um globale Objekte, Variablen und Funktionen zu vermeiden.
Gruß, Jürgen
@@Bernd:
nuqneH
und warum kommt da noch ein "();" hinterher?
Oder auch mittendrin, weil, wenn’s draußen hängt, sieht’s aus wie beim Hund zwischen den Beinen. https://forum.selfhtml.org/?t=209334&m=1424509 ff.
Qapla'
Lieber Gunnar Bittersmann,
und warum kommt da noch ein "();" hinterher?
Oder auch mittendrin, weil, wenn’s draußen hängt, sieht’s aus wie beim Hund zwischen den Beinen. https://forum.selfhtml.org/?t=209334&m=1424509 ff.
ist Crockfords Meinung wirklich sachlich begründet, oder geht es hier eher um etwas ästhetisches? Falls das letztere der Fall sein sollte, fände ich Crockfords Statement irrelevant.
Liebe Grüße,
Felix Riesterer.
hoppla, hab ein paar Klammern vergessen:
(function() {
// Funktionsinhalt
})();
Mit function erzeugst du eine Funktion, genauer: ein Funktionsobjekt. function gibt also ein Objekt zurück. Besser sieht man das in dieser Konstruktion:
var test = function () {
blafasel;
}
Dies ist gleichwertig zu:
function test () {
blafasel;
}
Egal, welche Variante du einsetzt: Es wird ein (Funktions-) Objekt erzeugt und in einer Variablen namens test abgelegt. Dieses Objekt lässt sich, wie bekannt, mit
test();
aufrufen.
Also, wir halten fest: function gibt ein Objekt zurück. Die Klammern um function(){} umfassen dieses Objekt sprachlich, damit …
> und warum kommt da noch ein "();" hinterher?
… es dann in einem Rutsch gleich aufgerufen werden kann.
Du bekommst also Definition und Aufruf in einem Paket, anstatt dieses schreiben zu müssen:
function test() { // oder var test = function () { - siehe oben
blafasel;
}
test();
Der Sinn der Übung ist, alles, was in function geschrieben wird, luft- und wasserdicht einzuschließen (Variablen in der Funktion bleiben lokal), ohne den darüber liegenden Namensbereich mit auch nur dem allerkleinsten Variablenfitzel zu belästigen (nicht einmal dem Funktionsnamen).
@@Erwin:
nuqneH
var test = function () {
blafasel;
}Dies ist gleichwertig zu:
function test () {
blafasel;
}
Nein, nicht ganz.
Qapla'