Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 16 bis 30 von 36
  1. #16
    SteelWheel ist offline Haudegen
    registriert
    18-07-2012
    Beiträge
    600

    AW: self-executing functions

    Mag mir - auch - bitte kurz jemand erklären, was diese (2) für eine Aufgabe hätte? Das lief mir bislang nie mit Inhalt über den Weg ... vielen Dank.

  2. #17
    tsseh ist offline Foren-Gott
    registriert
    19-05-2008
    Beiträge
    5.666

    AW: self-executing functions

    Zitat Zitat von SteelWheel Beitrag anzeigen
    Mag mir - auch - bitte kurz jemand erklären, was diese (2) für eine Aufgabe hätte? Das lief mir bislang nie mit Inhalt über den Weg ... vielen Dank.
    doch, andauernd
    Code:
    alert(2)

  3. #18
    Avatar von Dormilich
    Dormilich ist offline Kaiser
    registriert
    15-01-2010
    Beiträge
    1.297

    AW: self-executing functions

    Zitat Zitat von hesst Beitrag anzeigen
    es geht aber nicht. […] weil es eine function expression ist.
    es ist eben keine expression, weil der Kontext sagt, daß es eine definition ist.

  4. #19
    tsseh ist offline Foren-Gott
    registriert
    19-05-2008
    Beiträge
    5.666

    AW: self-executing functions

    Zitat Zitat von Dormilich Beitrag anzeigen
    es ist eben keine expression, weil der Kontext sagt, daß es eine definition ist.
    falsch, der Kontext sagt eindeutig es ist eine call expression.
    begründe!

  5. #20
    Avatar von Dormilich
    Dormilich ist offline Kaiser
    registriert
    15-01-2010
    Beiträge
    1.297

    AW: self-executing functions

    was hat eine call expression damit zu tun? ich kann hier nur auf basis des script-codes argumentieren (wo es eine call expression gar nicht gibt), nicht auf basis des dahinterstehenden Compilers.

  6. #21
    SteelWheel ist offline Haudegen
    registriert
    18-07-2012
    Beiträge
    600

    AW: self-executing functions

    So, ich hab jetzt Bahnhof - habe in der Zwischenzeit mal eben quer gelesen. Nun behauptet wer an anderer Stelle, dass die Problematik mit dem bspw. fehlenden Semikolon (hier im Thread erwähnt) mittels void function() { /* ... */ }() aus der Welt wäre. Nur:

    Code:
    (function(){ /* code */ }()); // Crockford recommends this one
    (function(){ /* code */ })(); // But this one works just as well
    Täusche ich mich oder sind das die beiden Schreibweisen des TO? Allerdings schreibt der Autor, dass die beiden funktionieren ... wie man sieht.

    Randnotiz: Ich habe gerade was von "labels" in einer function gelesen - das fand ich interessant, da sich diese Teile einer function bei Bedarf "skippen" lassen, die Funktion in der Folge aber noch weiter ausgeführt wird. Gibt ja schon interessante Dinge ...

    Danke für den Hinweis mit dem alert() - ich mache eindeutig noch zu viel manuell.

    Ich mische mich auch nicht weiter hier ein - da dürftet ihr gedanklich deutlich weiter sein.

  7. #22
    Avatar von Dormilich
    Dormilich ist offline Kaiser
    registriert
    15-01-2010
    Beiträge
    1.297

    AW: self-executing functions

    Zitat Zitat von SteelWheel Beitrag anzeigen
    Täusche ich mich oder sind das die beiden Schreibweisen des TO? Allerdings schreibt der Autor, dass die beiden funktionieren ... wie man sieht.
    solange aus der definition eine expression wird, ist die Klammersetzung (hier) egal. wie allerdings weiter oben schon gezeigt, gibt es noch andere Möglichkeiten diese Konversion zu erzwingen.

    Zitat Zitat von SteelWheel Beitrag anzeigen
    Randnotiz: Ich habe gerade was von "labels" in einer function gelesen - das fand ich interessant, da sich diese Teile einer function bei Bedarf "skippen" lassen, die Funktion in der Folge aber noch weiter ausgeführt wird. Gibt ja schon interessante Dinge ...
    labels sind nix Funktions-spezifisches, die kannst du überall einsetzen.

  8. #23
    tsseh ist offline Foren-Gott
    registriert
    19-05-2008
    Beiträge
    5.666

    AW: self-executing functions

    Zitat Zitat von Dormilich Beitrag anzeigen
    was hat eine call expression damit zu tun? ich kann hier nur auf basis des script-codes argumentieren (wo es eine call expression gar nicht gibt), nicht auf basis des dahinterstehenden Compilers.
    hä? wir reden doch über js syntax, richtig? laut js syntax
    ECMAScript Language Specification - ECMA-262 Edition 5.1
    besteht ein programm aus statements und function declarations
    function declarations ist denke ich klar, machen wir mit den statements weiter
    ECMAScript Language Specification - ECMA-262 Edition 5.1
    ein statement kann unter anderem ein expression statement sein
    ECMAScript Language Specification - ECMA-262 Edition 5.1
    welches eine expression ist.
    ECMAScript Language Specification - ECMA-262 Edition 5.1
    zu den expressions gehört die
    ECMAScript Language Specification - ECMA-262 Edition 5.1
    call expression welche eine member expression mit (argumenten) ist
    zu den member expressions gehört die function expression

    also ist laut syntaxbaum das
    Code:
    function(value){
      console.log(value);
    }(2);
    eindeutig eine callexpression
    da laut syntax ECMAScript Language Specification - ECMA-262 Edition 5.1 aber eine function declaration und eine function expression nicht auseinander gehalten werden können und es so zu konflikten kommen kann haben sie das so ECMAScript Language Specification - ECMA-262 Edition 5.1 gelöst
    an ExpressionStatement cannot start with the function keyword because that might make it ambiguous with a FunctionDeclaration.
    und man muss den umweg über eine (sinnlose) primary expression gehen

    - - - Aktualisiert - - -

    Zitat Zitat von SteelWheel Beitrag anzeigen
    Täusche ich mich oder sind das die beiden Schreibweisen des TO? Allerdings schreibt der Autor, dass die beiden funktionieren ... wie man sieht.
    ja, darum geht es doch, es gehen noch viel mehr
    Code:
    ++function(){ /* code */ }();
    !function(){ /* code */ }();
    man muss nur aus der function expression eine primary expression machen

  9. #24
    j-l-n Guest

    AW: self-executing functions

    Zitat Zitat von hesst Beitrag anzeigen
    ja, darum geht es doch, es gehen noch viel mehr
    Code:
    ++function(){ /* code */ }();
    !function(){ /* code */ }();
    man muss nur aus der function expression eine primary expression machen
    Und kann man jetzt sagen, was die beste Methode davon ist, oder ist das völlig egal? Denn warum
    (function(){ /* code */ }()); // Crockford recommends this on
    ?

  10. #25
    tsseh ist offline Foren-Gott
    registriert
    19-05-2008
    Beiträge
    5.666

    AW: self-executing functions

    Zitat Zitat von j-l-n Beitrag anzeigen
    Und kann man jetzt sagen, was die beste Methode davon ist, oder ist das völlig egal? Denn warum ?
    bis auf besagte sache mit mehreren dateien die zusammengefasst werden UND eine am ende kein semikolon hat UND die folgende solch ein konstrukt verwendet ist es egal.
    für den fall dass das doch von bedeutung sein sollte, erzeugt
    datei n: alert(2)
    datei n+1: (function(){;})()
    und auch
    datei n: alert(2)
    datei n+1: (function(){;}())
    einen laufzeitfehler
    etwas wie
    datei n: alert(2)
    datei n+1: !function(){;}()
    einen syntaxfehler den man schneller findet

  11. #26
    SteelWheel ist offline Haudegen
    registriert
    18-07-2012
    Beiträge
    600

    AW: self-executing functions

    ES6 (zirka Mitte 2015?) bringt ja ein paar schöööne Dinge mit ... na hoppla! let, classes, subclasses, for-of Loop ... .findIndex(), .assign() ... oder gar eine "promises"-API.

    Das sieht ja alles ziemlich interessant aus - die Browser sind wohl auch schon schönes Stück vorwärts damit.

    Hehe ... komme mir gerade so vor, als wäre ich irgendwie die letzten Jahre auf einem anderen Planeten gewesen. Man, ist mein JavaScript oldschool. Sollte in meine Signatur "Retro-Coder" aufnehmen.


    Zurück zum Thema ... in meine kleine Verständniswelt, voll mit Eselsbrücken!

    Also mir ist das noch nie (!) "in the wild" über den Weg gelaufen. Entweder lese ich weniger Quellcode als ich dachte, oder es ist wirklich nicht so weit verbreitet.

    If you don't care about the return value, or the possibility of making your code slightly harder to read, you can save a byte by just prefixing the function with a unary operator.
    Code:
    !function(){ /* code */ }();
    ~function(){ /* code */ }();
    -function(){ /* code */ }();
    +function(){ /* code */ }();
    Das ist dann nur eine andere (!; aber jeweils gleichbedeutende) Schreibweise für (function(){ ... })();? Ansonsten schule ich echt um auf "Zuhälter", "Drogenbaron" oder "Politiker" (ziemlich für alle die gleiche Stellenbeschreibung) ... ! Falls ich das (dann doch) verstanden haben sollte, erinnert mich das an Mandarin: 12 verschiedene Schreibweisen für das exakt gleiche Wort ... !

    Das passt - IMO - auf eure Diskussion: "The most widely accepted way to tell the parser to expect a function expression is just to wrap it in parens, because in JavaScript, parens can’t contain statements. At this point, when the parser encounters the function keyword, it knows to parse it as a function expression and not a function declaration."

    Randnotiz: Wenn ich das Beispiel von Dir, hesst, nehme, wäre void() zur Fehlerfindung aber durchaus Gift (um den Abbruch durch fehlendes ";" zu hindern) - vgl. mein letztes Posting. Hmmm ... !

    Habt Dank für eure Geduld mit mir.

  12. #27
    tsseh ist offline Foren-Gott
    registriert
    19-05-2008
    Beiträge
    5.666

    AW: self-executing functions

    Zitat Zitat von SteelWheel Beitrag anzeigen
    Das ist dann nur eine andere (!; aber jeweils gleichbedeutende) Schreibweise für (function(){ ... })();?
    ja, man wrappt die call expression mit einer primary expression

    Zitat Zitat von SteelWheel Beitrag anzeigen
    Randnotiz: Wenn ich das Beispiel von Dir, hesst, nehme, wäre void() zur Fehlerfindung aber durchaus Gift (um den Abbruch durch fehlendes ";" zu hindern) - vgl. mein letztes Posting.
    nein, void function() { /* ... */ }() verhält sich wie !function() { /* ... */ }()

  13. #28
    SteelWheel ist offline Haudegen
    registriert
    18-07-2012
    Beiträge
    600

    AW: self-executing functions

    void() wurde - wie erwähnt - empfohlen, um einem fehlenden ";" Herr zu werden, sofern im Anschluss noch so ein Konstrukt kommt.

    Schade, doch keine Umschulung.

  14. #29
    Frankie5 ist offline Jungspund
    registriert
    15-12-2005
    Beiträge
    19

    AW: self-executing functions

    Hoi zamä :-)

    Also hier ist das jedenfalls genau erklärt:
    Das "Module Pattern" Teil I - Javascript - Tutorials, Tipps und Tricks für Webmaster auf Webmasterpro.de

    Grüße,
    Frankie

  15. #30
    j-l-n Guest

    AW: self-executing functions

    À propos, weil ich gerade auf MDN die Variante mit void entdeckt habe: könnte mir bitte jemand mal erklären wozu genau man eine solche Funktion, die
    evaluates the given expression and then returns undefined.
    braucht?

Seite 2 von 3 ErsteErste 123 LetzteLetzte

Ähnliche Themen

  1. this in functions übergeben
    Von GELight im Forum JavaScript
    Antworten: 9
    Letzter Beitrag: 23-01-2011, 19:18
  2. functions return
    Von dezer im Forum JavaScript
    Antworten: 10
    Letzter Beitrag: 08-04-2009, 17:57
  3. COM Functions in PHP4
    Von promillo im Forum Serverseitige Programmierung
    Antworten: 0
    Letzter Beitrag: 11-07-2001, 09:59
  4. functions mit Netscape
    Von Metbrötchen im Forum JavaScript
    Antworten: 0
    Letzter Beitrag: 29-11-2000, 10:57

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •