Verständnisfrage zu Closures

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Verständnisfrage zu Closures

    Also ich habe folgenden Code:
    PHP Code:
    function funktionA()
    {
      var 
    variable 'bla';
      function 
    funktionB()
      {
        
    alert (variable);
      }
      
    funktionB();
    }
    funktionA(); 
    Anstelle von function funktionB() kann ich ja auch so was schreiben:
    PHP Code:
    funktionB = function()
    {
      
    alert (variable);

    oder
    PHP Code:
    var funktionB = function()
    {
      
    alert (variable);

    Also. Bei einem funktionB = function() hängt die Funktion nach dem Aufruf von funktionA() im window-Objekt. Um das zu verhindern, wird da wohl die Variante var funktionB = function() genommen, um das zu verhindern.

    Aber! Und jetzt kommt meine eigentliche Frage. Was ist denn nun der Unterschied zwischen var funktionB = function() und function funktionB()? Auf beide kann man nicht direkt zugreifen und sie hängen auch nicht im window-Objekt.

    Peter

    PS: Ich werde diese Sprache wohl nie ganz begreifen.
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

  • #2
    Originally posted by Kropff View Post
    Was ist denn nun der Unterschied zwischen var funktionB = function() und function funktionB()?
    Im großen und ganzen ist der Unterschied: Es gibt keinen.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Comment


    • #3
      Originally posted by wahsaga View Post
      Im großen und ganzen ist der Unterschied: Es gibt keinen.
      Und was soll dann der Sch***ß? Ich bastel hier schon eine Stunde herum, um endlich mal einen Unterschied zu finden und dann das. Wieso einfach, wenn es auch kompliziert geht?

      Peter
      Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
      Meine Seite

      Comment


      • #4
        Und warum willst du auf Teufel komm raus Unterschiede finden, wenn beides funktioniert ...? :-)
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Comment


        • #5
          Originally posted by wahsaga View Post
          Und warum willst du auf Teufel komm raus Unterschiede finden, wenn beides funktioniert ...? :-)
          Ich frag mich nur, warum es dann zwei(!) Schreibweisen für ein die selbe Sache gibt. Außerdem muss man bei JavaScript ja immer auf eine Überraschung gefasst machen. Wie zum Beispiel das this in einer lokalen Funktion. Weist dann auf das window-Objekt hin und keine Sau weiß warum. Naja, ist halt JavaScript. *kopfschüttel*

          Peter
          Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
          Meine Seite

          Comment


          • #6
            Originally posted by Kropff View Post
            Ich frag mich nur, warum es dann zwei(!) Schreibweisen für ein die selbe Sache gibt.
            Es gibt Unterschiede zwischen diesen beiden Varianten. Die mit var erzeugt eine anonyme Funktion, die an eine Variable gebunden ist. Die mit function name () erzeugt keine anonyme Funktion. Den Unterschied kann man erkennen, wenn man mit der Caller-Eigenschaft rummacht.

            Originally posted by Kropff View Post
            Außerdem muss man bei JavaScript ja immer auf eine Überraschung gefasst machen. Wie zum Beispiel das this in einer lokalen Funktion.
            Auch das ist gut dokumentiert und folgt Regeln die zwar anders als in PHP sind, denen aber dennoch eine nachvollziehbare Logik innewohnt.

            ECMAScript Language Specification (HTML version)
            ECMAScript Language Specification (HTML version)
            https://developer.mozilla.org/en/Jav...s/Special/this
            [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
            Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
            Super, danke!
            [/COLOR]

            Comment


            • #7
              https://developer.mozilla.org/en/Jav...function_scope

              Comment


              • #8
                Originally posted by AmicaNoctis View Post
                Es gibt Unterschiede zwischen diesen beiden Varianten. Die mit var erzeugt eine anonyme Funktion, die an eine Variable gebunden ist. Die mit function name () erzeugt keine anonyme Funktion. Den Unterschied kann man erkennen, wenn man mit der Caller-Eigenschaft rummacht.
                Da bin ich ja erleichtert, dass es doch einen Unterschied gibt.
                Originally posted by AmicaNoctis View Post
                Auch das ist gut dokumentiert und folgt Regeln die zwar anders als in PHP sind, denen aber dennoch eine nachvollziehbare Logik innewohnt.
                Naja, ist wohl Ansichtssache. Nur weil etwas spezifiziert wurde, heißt das noch lange nicht, dass es logisch oder sinnvoll ist. Ich denke da nur an die collapsing margins.

                Peter

                Originally posted by AmicaNoctis View Post
                Erinnerung an mich selbst: Niemals, never ever anyway, Kommentare vor dem HTML-Element einfügen!!!
                Siehste, ist sicher auch irgendwo spezifiziert und folgt einer bestimmten Logik. Aber dich treibt es in den Wahnsinn.
                Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                Meine Seite

                Comment

                Working...
                X