Hilfe zu Javascript Beispiel

  • Hallo


    da ich gerade angefangen habe Javascript zu lernen bin ich noch nicht so schnell im kapieren :D


    Hier ist mal das Beispiel:


    <html>
    <head><title>Sichtbarkeit von Variablen</title>
    <script language="JavaScript" type="text/javascript">
    <!-- Inhalt vor alten Browsern verstecken


    // Definition einer Funktion, die die Variable
    // aus dem Hauptprogramm veraendert
    function f1()
    {
    document.writeln("f1: Wert von x ist ",x);
    x = 10;
    document.writeln("f1: Wert von x ist ",x);
    }


    // Definition einer Funktion, die eine lokale
    // Variable definiert
    function f2()
    {
    document.writeln("f2: Wert von x ist ",x);
    var x = 15;
    document.writeln("f2: Wert von x ist ",x);
    }


    // Ende: Inhalt verstecken -->
    </script>
    </head>
    <body>
    <h1>Sichtbarkeit von Variablen</h1>


    <pre>


    <script language="JavaScript" type="text/javascript">
    <!-- Inhalt vor alten Browsern verstecken


    // Definition von x
    var x = 5;


    // Ausgabe des Wertes von x
    document.writeln("HP: Wert von x ist ",x);


    // Aufruf der Funktion f1()
    f1();


    // Ausgabe des Wertes von x
    document.writeln("HP: Wert von x ist ",x);


    // Aufruf der Funktion f2()
    f2();


    // Ausgabe des Wertes von x
    document.writeln("HP: Wert von x ist ",x);


    // Ende: Inhalt verstecken -->
    </script>
    </pre>
    <noscript>
    Ihr Browser kann keine JavaScript-Programme
    ausführen. Aus diesem Grund sehen Sie hier
    nichts. :-(
    </noscript>
    </body>
    </html>



    Und das kommt hier dabei raus:


    HP: Wert von x ist 5
    f1: Wert von x ist 5
    f1: Wert von x ist 10
    HP: Wert von x ist 10
    f2: Wert von x ist undefined
    f2: Wert von x ist 15
    HP: Wert von x ist 10


    Ich verstehe da aber was nicht!
    Warum ist f2 undefiniert?
    und das letzte HP wieder x=10 ?


    Vielen dank für Eure Hilfe


    lg
    claudi

  • mmmh, :confused:


    dass das 2. f2 local ist kann ich ja verstehen, aber was ist mit dem ersten?


    function f2()
    {
    document.writeln("f2: Wert von x ist ",x); <--- der bekommt doch nicht
    var x=15 , erst das nächste?!
    var x = 15;
    document.writeln("f2: Wert von x ist ",x);
    }


    warum nimmt er dann nicht die globale 10 ?