kostenloser Webspace werbefrei: lima-city


Funktionen in Klammern

lima-cityForumDie eigene HomepageHTML, CSS & Javascript

  1. Autor dieses Themas

    programtools

    programtools hat kostenlosen Webspace.

    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
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. g****e

    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
    (function(){})
    ist es das gleiche wie
    (new Date())
    , 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:
    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
    (function(){})(arguments);
    also eigentlich das gleiche wie
    (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
  4. Autor dieses Themas

    programtools

    programtools hat kostenlosen Webspace.

    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
  5. 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
  6. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!