molily: problem

Beitrag lesen

Hallo,

function-statements werden vom JavaScript parser sozusagen vor eingelesen und können deshalb auch schon aufgerufen werden, bevor sie im Quellcode definiert sind.

Ja, »sozusagen«. Als einfache Veranschaulichung ist das in Ordnung.

Als Parser wird bei der Verarbeitung von Programmiersprachen üblicherweise das Modul bezeichnet, das den Quellcode in einen abstrakten Syntaxbaum überführt. Der Parser liest das Programm immer von vorne bis hinten ein. Mit der Ausführung des Programms hat der Parser nichts zu tun, diese operiert auf dem abstrakten Syntaxbaum.

Um zu erklären, was hier intern vorgeht, ist der Begriff des Ausführungskontextes hilfreich.

ECMAScript definiert: »Every invocation of an ECMAScript code function … establishes and enters a new execution context«. Beim Ausführen von Funktionen gelten die Schritte Entering Function Code, darin passiert die Declaration Binding Instantiation. Punkt 5 dort regelt die frühe Verarbeitung von Funktionsdeklarationen: »For each FunctionDeclaration f in code, in source text order do … «: erzeuge ein Binding im aktuellen Scope. Erst danach wird der Funktionskörper samt Expressions ausgeführt.

Das ist das sogenannte Hoisting (Hochziehen) von Funktions- und Variablendeklarationen, was zu dem oben genannten Verhalten führt.

Diese Kenntnisse sind nicht zwingend notwendig, aber letztlich sehr hilfreich beim Verständnis verschiedener zentraler JavaScript-Phänomene, darunter Scopes, Identifier Resolution, lokale Variablen, Closures, this und der Strict-Modus.

Dmitry Soshnikov hat einmal versucht, dieses Wissen kompakt in einem Artikel zusammenzutragen, den ich ins Deutsche übersetzt habe.

Siehe auch:
http://davidshariff.com/blog/what-is-the-execution-context-in-javascript/

Mathias

0 49

problem

Nightloewe
  • javascript
  1. 0
    Klawischnigg
    1. 0
      Jeena Paradies
  2. 0
    Jeena Paradies
    1. 0
      Malcolm Beck´s
      1. 0
        Der Martin
        1. 0
          Malcolm Beck´s
          1. 0
            Der Martin
            1. 0
              Malcolm Beck´s
              1. 0
                Der Martin
                1. 0
                  Malcolm Beck´s
                  1. 0
                    Der Martin
                    1. 0
                      Malcolm Beck´s
        2. 0
          molily
      2. 7
        1UnitedPower
        1. 0

          Korrektur am Codebeispiel

          1UnitedPower
        2. 0
          Malcolm Beck´s
          1. 0
            1UnitedPower
            1. 0
              Malcolm Beck´s
              1. 0
                1UnitedPower
                1. 0

                  JQuery, Funktionen und Anonyme Funktionen

                  Malcolm Beck´s
                  1. 0
                    1UnitedPower
                    1. 0
                      Malcolm Beck´s
                      1. 0
                        1UnitedPower
                        1. 0
                          Malcolm Beck´s
                    2. 0
                      Der Martin
                      1. 0
                        1UnitedPower
                      2. 0
                        Malcolm Beck´s
                        1. 0
                          Der Martin
                          1. 0
                            Malcolm Beck´s
        3. 0
          molily
        4. 3
          molily
          1. 0
            1UnitedPower
      3. 0
        Klawischnigg
      4. 0

        Gibt es Benchmark-Tools für Seiten mit Javascript?

        Malcolm Beck´s
  3. 0
    MudGuard
  4. 0
    Nightloewe
  5. 1

    Sinnvoller Titel, Problembeschreibung

    Der Martin
    • zu diesem forum
    1. 0
      Gunnar Bittersmann
      1. 0
        Der Martin
        1. 0
          Gunnar Bittersmann
          1. 0
            misterunknown
            1. 0
              Gunnar Bittersmann
              1. 0
                misterunknown
                1. 0
                  Gunnar Bittersmann
                  1. 0
                    Matthias Apsel
                    1. 0
                      Gunnar Bittersmann
                  2. 0
                    misterunknown
                    1. 0
                      Gunnar Bittersmann