Funktionen in Klammern
lima-city → Forum → Die eigene Homepage → HTML, CSS & Javascript
code
date
dunkle bringen
einzelne zeile
funktion
instanz
klammern
konflikt
letzten klammern
objekt
organisation
packen
sagen
setzen
speichern
test
text
url
variable code
welt
-
Hi,
ich hab das ein paar mal gesehen, bin mir aber nicht darüber im Klaren, was dahinter steckt.
(function(){ })(variable)
Was ich meine ist eine Funktion, die in Klammern () Deklariert wird und am Ende von () gefolgt wird. In den letzten Klammern steht optional eine Variable (hier variable).
Was ist der Usecase dahinter? Ich wäre froh, wenn sich jemand damit auskennt, der mir da etwas Licht ins Dunkle bringen kann :)
Liebe Grüße -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Funktionen sind in Javascript etwas besonderes: Sie sind ein Datentyp.
Javascript Datentypen sind: String, Number, Object, Undefined, null, Function und Boolean. Daher kann man ja auch sagen
var test = function() {alert("hallo welt"); };
Nun, warum schreib ich das? Weil das ein Teil der Erklärung ist:
Wenn du eine Funktion schreibst wird sie als Variable gehalten. Wenn du also schreibst
ist es das gleiche wie(function(){})
, es wird eine Instanz dieser Funktion bzw dieses Objektes erzeugt, aber nicht zugewiesen, sondern durch die Klammern direkt nutzbar. Um eine Funktion aber zu benutzen musst du ein () dahinter setzen:(new Date())
var test = function() {alert("hallo welt"); }; test();
Das kannst du jetzt in eine einzelne Zeile packen, indem du die Variablenzuweisung weglässt und durch eine direkt zugreifbare Instanz ersetzt (also Klammern rum, wie bei Date), und benutzt es dannach dann mit den Klammern () dahinter.
Damit ist
also eigentlich das gleiche wie(function(){})(arguments);
.(new Date()).toString();
Ich hoffe es ist klar geworden, wenn nicht einfach weiter fragen
Liebe Grüße
Beitrag zuletzt geändert: 5.8.2013 12:46:48 von ggamee -
Hi,
vielen Dank für diese wirklich gute und kompakte Erklärung!!
Hat für mich das Rätsel gelöst und ich muss sagen, eigentlich lag die Lösung ja nun echt nahe. Aber der entscheidende Funke hat gefehlt :D Aber jetzt ist dann doch der Groschen gefallen.
Nochmal vielen Dank & Grüße -
Hallo,
das Konzept welches sich hinter diesen Funktionen verbirgt nennt sich übrigens Closure ein Closure ist eine Funktion, welche sofort ausgeführt wird und ein Objekt erzeugt.
Zu der Funktionsweise gibt es auf selfhtml.org eine sehr gute Erklärung.
Diese Methode wird vor allem benutzt um Konflikte mit anderen Scripten zu verhindern und um den Speicher effizienter zu nutzen.
Übrigens gibt es selbst davon noch einen Shortcut, der allerdings nur sinnvoll benutzt werden kann, wenn der Rückgabewert der Funktion egal ist:var fn1 = function(){ return "Dieser Funktion ist in einer Variablen gespeichert und " + "lässt sich dadurch mehrfach ausführen.\n" + "Dabei wird jedesmal dieser Text zurückgegeben."; } var var1 = fn1(); var var2 = (function(){ return "Dieser Funktion wird sofort ausgeführt und danach " + "aus dem Speicher entfernt!" + "Dabei wird dieser Text zurückgegeben."; })(); var var3 = !function(){ return "Dieser Funktion wird sofort ausgeführt und danach " + "aus dem Speicher entfernt!" + "Dabei wird dieser Text zurückgegeben und negiert, " + "wodurch false zurückgegeben wird."; }(); alert(var1); alert(var2); alert(var3);
Mit freundlichen Grüßen -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage