Jochen Stein: globale Variablen auf lokaler Ebene deklarieren?!

Hallo Leute!

Ich arbeite gerade an einem Script für meine Site.
Dabei muss ich in einer Funktion lokal eine Variable deklarieren, die ich wieder auf globaler Ebene nutzen muss. In anderen Programiersprachen wie C oder C++ kann man dies auch machen indem man das Wort static als Beschreibung der VAriable einsetzt. Geht soetwas in Javascript auch. Wenn ja, wie? Für gute Ratschläge wär ich echt dankbar!

Bsp.:<script language"Javascript">
      function lokaleVariable(){
               var lokal;
               lokal="Tést";
               }
      alert(+lokal);
      </script>

Die Variable "lokal" soll dabei auch von außerhalb der Funktion also global aufgerufen werden können.

  1. Ist in JavaScript auch möglich. Dazu muß einfach nur das Schlüßelwort var weggelassen werden.

    <script language"Javascript">
           function lokaleVariable(){
                    global = "globale Variable";
                    var lokal;
                    lokal="Tést";
                    }
           lokaleVariable();
           alert(global);
           </script>

    gruss Thorsten

  2. Hallo Jochen,

    Bsp.:<script language"Javascript">
          function lokaleVariable(){
                   var lokal;
                   lokal="Tést";
                   }
          alert(+lokal);
          </script>

    JavaScript geht mit Variablen etwas anders um. Innerhalb von Funktionen kannst du jede globale Variable ohne spezifische Deklaration verwenden und auch ändern.
    Jede Variable die du innerhalb einer Funktion _ohne_ var deklariertst wird automatisch zur globalen Variable.

    Lokale Variablen sind in JavaScriptfunktionen grundsätzlich nur die Parameter einer Funktion und die Variablen, die extra mit var deklariert wurden.

    Viele Grüße

    Antje

    1. Hi,

      Antje

      nice to read you, *wink*.

      Jan
      --

  3. Moin,

    In anderen Programiersprachen wie C oder C++ kann man dies auch »»
    machen indem man das Wort static als Beschreibung der VAriable einsetzt.

    IMHO nicht ganz korrekt. Bei einer Funktion wie der folgenden ...

    void foo(int par) {
        static int count=0;
        ++count;
        do_something(par);
        // ...
      }

    ... ist die Variable count von außen nicht zugänglich. Sie
    behält aber zwischen Funktionsaufrufen ihren Speicherplatz und
    ihren Wert - in diesem Beispiel zählt sie mit, wie oft die
    Funktion foo aufgerufen wurde.

    Statische Klassenvariablen sind dagegen über das Konstrukt

    Klassenname::statische_variable

    global zugänglich, sofern sie im 'public:'-Bereich der Klasse stehen.
    Das nur als Ergänzung, Deine Frage wurde ja ansonsten schon
    beantwortet.

    Viele Grüße

    Andreas