externe JavaScript-Datei

  • hallo Leute

    Ich hab ein HTML-Dokument, in dem ich exteren JavaScript-Dateien eingebunden habe. Innerhalb dieser Dateien werden Arrays deklariert.

    Wenn ich das Dokument aufrufe, kann ich die Arrayeinträge ändern.

    Meine Frage ist jetzt, wo werden diese Änderungen vorgenommen?
    Soll heißen so lange das Dokument géöffnet ist sind die Änderungen dar. Werden die Daten in den Stack geladen, und wenn ja, wann? Beim Verwenden des Arrays oder bei der bekanntgabe der Dateien mittels

    Code
    <script type="text/javascript" src="Arraydateien/test.js"></script>

    Hoff ich hab mich verständlich ausgedrückt und ihr könnt mir helfen?

    Mattis

  • Also eigentlich ist das ja ganz einfach.

    Daten werden über den Browser vom Server geladen.
    Der Browser interpretiert den Code dann.
    Also werden sie im Browser zusammengesetzt und wenn der geschlossen wird (oder die Seite) sind sie weg,

    Also würde ich sagen, dass der Browser, sobald er auf die Deklarierung trifft, die Arrays registriert und bereit stellt.

  • Hallo

    Steh irgendwie total auf dem Schlauch.


    Zitat

    Also würde ich sagen, dass der Browser, sobald er auf die Deklarierung trifft, die Arrays registriert und bereit stellt.

    Deklariert werden die Arrays innerhalb der externen JavaScript-Dateien. Wird beim bekannt machen der Dateien, der Code interpretiert und somit das Array deklariert, oder erst wenn ich das Array verwende? Wenn bei der Verwendung, wird dann das Array bei jeder Verwendung neu deklariert?

    Wo werden diese Arrays registiert und bereitgestellt?

    Hoff ihr könnt mir nochmals helfen.

    mattis

  • Du stellst fragen :wink:
    Soweit ich weis, kommt der include Code einer Ersetzng gleich.
    Sprich intern wird die Anweisung gegen den Code getauscht, der in der Datei steht. Das geschieht (jedenfall in C++, Delphi, ...) vom Preparser -compiler.
    Ich könnte mir denken, dass es in einigen Browsern genau so ist.

    Also musst du dir vorstellen, dass alles in einer Datei steht.
    Wie meinst du das mit der Verwendung?
    Jedes Mal, wenn die Seite neu geladen wird, wird sie als eigenständige Einheit genommen und somit sind alle Daten neu.

    Zitat

    Wo werden diese Arrays registiert und bereitgestellt?


    Ist das nicht eigentlich völlig egal?
    Du kannst so drauf zugreifen, wie du halt drauf zugreifen kannst, da bringt es auch nichts zu wissen, wo genau sie registriert werden.
    Ich würde aber mal ganz einfach auf das Variablenregister des Interpreters(Browsers) tippen.

    Falls es dich genauer interessiert, gucke mal hier.
    Da ist das ganze eine Ebene höher auf Hardwarebasis erklärt.
    Musst es dir nur ein wenig, rein auf Softwarebasis, umdenken.

    Insgesammt gesehen kann man das so nicht sagen, weil es in jedem Browser anders sein könnte.

    Falls du es ganz genau wissen willst, guck dir den Source Code vom Firefox an ;)

  • Hallo

    Schreib zur Zeit an einer wichtigen Arbeit und benötige dies deswegen sehr genau.

    Also kann man sagen das wenn folgender Code gefunden wird:

    Code
    <script type="text/javascript" src="Arraydateien/test.js"></script>


    dieser durch den in der Datei enthaltenen Code intern ersetzt wird und somit eine "große" Datei entsteht, welche abgearbeitet wird. Diese Datei und somit auch der Inhalt des Arrays befindet sich somit in dem Stack und auf diesen greife ich drauf zu und nicht auf die Datei, in der das jeweilige Array deklariert wird.

    Mit Verwendung meinte ich, wenn ich auf die Inhalte des Arrays zugreife um z.B. Einträge zu ändern.

    Wäre nett wenn du mir nochmals ein kurzes Statement geben könntest, ob ichs jetzt gerafft habe.

    Und Danke für deine Geduld und Hilfe

    Mattis

  • Also ersteinamal, ich denke nur, dass es so ist.
    Ich weis, dass in in den Sprachen C(mit Familie), Delphi, PHP, Perl, ... so ist.
    Ich hab mal ein wenig den Source der Engine NGS durchleutet.

    Zitat

    /* Array type. */
    struct js_type_array_st
    {
    unsigned int length;
    struct js_type_st *data;
    };

    typedef struct js_type_array_st JSTypeArray;

    Ich bin kein C Experte, aber es scheint so, als würden die JS Variablen über Strukturen in C Variablen gespeichert werden.
    Du musst dir vor Augen halten, dass JS eine Sprache ist, die interpretiert wird.

    Ich möchte an dieser Stelle darauf hinweisen, dass alles was ich geschrieben habe rein auf Erfahrung basiert und ich keine Garantie gebe, dass es richtig ist.
    Was ich erklärt habe, kenne ich von anderen Sprachen, und ich vermute, dass es in JS genauso ist.

    Das mit der großen Datei ist zum Verständnis gut, allerdings ist es warscheinlicher, dass sich ainfach nur alle String Daten im Interpreter zusammensetzen.
    Alles weitere passiert intern und ich bin jetzt nicht scharf drauf, den gesammten Code zu analysieren.

  • Hallo

    Bei Perl und der anderen genannten Sprachen handelt es sich ja auch um Interpretersprachen, also klingt das schon so einleuchtent.

    Das JavaScript nicht interpretiert sondern zur Laufzeit ausgeführt wird, ist mir bekannt. Leider etwas falsch ausgedrückt.

    Das mit der großen Datei war auch nur zur Veranschaulichung, das ich nicht jedesmal auf die Arraydatei zugriefe wenn ich z.B. einen Arrayeintrag ändere. Sondern sich das Array intern in dem Browser (Interpreter) befindet und diese Werte verändert werden.

    Danke für deine Hilfe.

    Mattis