Hans: globale Variablen zugreifen ??

Hallo,

ich habe eine Funktion work_with_x(), die auf eine globale Variable zugreift (da andere Funktionen diese auch verwenden).

var x_global;

function work_with_x() {
  alert(x);  // vereinfacht
}

Jetzt möchte ich mit einer Funktion work_with_x_or_y() verschiedene globale Variablen auf die gleiche Weise verarbeiten, das habe ich bisher folgendermaßen realisiert:

var y_global;

/* use_tf = true  --> use x
 *          false --> use y
 */
function work_with_x_or_y(use_tf) {
  var a=(use_tf)?x_global:y_global;
  alert(a);
}

Hat jemand eine bessere, bzw. elegantere Lösung dafür?
Gibt es in JavaScript soetwas wie Zeiger work_with_x_or_y(&x_global), wobei &x_global wie bei C der Zeiger auf x_global ist?

Über Antworten würde ich mich freuen. Bedanke mich schonmal.

Gruß Hans

  1. Ne.
    de.jimdo.com
    schüüüs

  2. Hat jemand eine bessere, bzw. elegantere Lösung dafür?
    Gibt es in JavaScript soetwas wie Zeiger work_with_x_or_y(&x_global), wobei &x_global wie bei C der Zeiger auf x_global ist?

    Ich weiß nicht so ganz was dein Problem ist, aber es gibt keine Zeiger oder ähnliches in JS.

    Struppi.

    1. Hat jemand eine bessere, bzw. elegantere Lösung dafür?
      Gibt es in JavaScript soetwas wie Zeiger work_with_x_or_y(&x_global), wobei &x_global wie bei C der Zeiger auf x_global ist?

      Ich weiß nicht so ganz was dein Problem ist, aber es gibt keine Zeiger oder ähnliches in JS.

      Struppi.

      Hallo,

      das Problem ist, dass wenn ich mehrere Variablen habe (was der Fall ist) aus "var a=(use_tf)?x_global:y_global;" mehrere große Switch-Anweisungen werden, was ich unschön programmiert finde. Deshalb die Frage ob das auch eleganter geht.

      Gruß Hans

      1. Mahlzeit Hans,

        Deshalb die Frage ob das auch eleganter geht.

        Ja: übergib die Variable, mit der innerhalb einer Funktion irgendetwas angestellt werden soll, per http://de.selfhtml.org/javascript/sprache/funktionen.htm@title=Funktionsparameter.

        MfG,
        EKKi

        --
        sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
        1. Hoi!

          Ja: übergib die Variable, mit der innerhalb einer Funktion irgendetwas angestellt werden soll, per http://de.selfhtml.org/javascript/sprache/funktionen.htm@title=Funktionsparameter.

          Das scheint ja abhaengig davon zu sein, welche so gesetzt sind. Eventuell muesste man die Codestruktur neu ueberdenken. Aber so kommt man um nen dicken Anweisungsblock der alle Variablen prueft, nicht rum.

          --
          "Die Diebesgilde beklagte sich darueber, dass Mumm in aller Oeffentlichkeit behauptet hatte, hinter den meisten Diebstaehlen steckten Diebe."
                - T. Pratchett
      2. Struppi.

        Bitte keine Fullquotes, Danke.

        das Problem ist, dass wenn ich mehrere Variablen habe (was der Fall ist) aus "var a=(use_tf)?x_global:y_global;" mehrere große Switch-Anweisungen werden, was ich unschön programmiert finde. Deshalb die Frage ob das auch eleganter geht.

        Sicher ist das unschön, aber du hast es doch so programmiert. Die Frage ist eher, was bezweckst du damit?

        Struppi.

      3. Hallo Hans,

        das Problem ist, dass wenn ich mehrere Variablen habe ...

        schon mal an Arrays gedacht?

        Auf globale Variablen kann man auch über

          var Globales = "irgendwas";  
          alert( window["Globales"] );
        

        zugreifen.

        Gruß, Jürgen

        1. Hi,

          Auf globale Variablen kann man auch über

          var Globales = "irgendwas";

          alert( window["Globales"] );

          
          >   
          > zugreifen.  
            
          Wobei du in der zweiten Zeile dann vermutlich window[Globales] meintest - um damit die globale Variable namens irgendwas anzusprechen.  
            
          MfG ChrisB  
            
          
          -- 
          Light travels faster than sound - that's why most people appear bright until you hear them speak.
          
          1. Hallo ChrisB,

            meinte ich zwar nicht, geht aber auch.

            Gruß, Jürgen

            1. Hi,

              meinte ich zwar nicht, geht aber auch.

              Ach so, jetzt verstehe ich deinen Code :-)
              Die Zeilen waren nicht als direkt aufeinander folgende Anweisungen innerhalb einer Funktion gedacht, wie ich das erst interpretiert hatte.

              MfG ChrisB

              --
              Light travels faster than sound - that's why most people appear bright until you hear them speak.
              1. Hallo ChrisB,

                meine Idee war, dass man den Arrayindex oder den Namen der globalen Variablen übergibt, wenn man sie nicht direkt an die Funktion übergeben kann.

                Gruß, Jürgen

                1. Hallo ChrisB,

                  meine Idee war, dass man den Arrayindex oder den Namen der globalen Variablen übergibt, wenn man sie nicht direkt an die Funktion übergeben kann.

                  Gruß, Jürgen

                  Kleiner Tip am Rande: Zeiger und Referenzen verdankten dem Benutzer eine Blaue-Spielwiese während der Benutzung eines speziellen Betriebssystems!
                  Da du global auf die Variable zugreifen kannst (auch in lokalen Methoden), benötigst du keine Zeiger!
                  (oder was willst du mit einem Zeiger sonst machen? )!
                  Um das Memory-Management kümmert sich schon ECMA!
                  Vermeide, wenn möglich (und das ist immer möglich) pass-by-reference!!!

                  MFG cro$$

                  1. Hi,

                    Kleiner Tip am Rande: Zeiger und Referenzen verdankten dem Benutzer eine Blaue-Spielwiese während der Benutzung eines speziellen Betriebssystems!

                    Wer hier wem was verdankt, meintest du wohl umgekehrt? Sonst kommt ja nicht mal ansatzweise Ironie zur Kenntnis in der Aussage ...

                    Da du global auf die Variable zugreifen kannst (auch in lokalen Methoden), benötigst du keine Zeiger!
                    (oder was willst du mit einem Zeiger sonst machen? )!

                    Lies die Aufgabenstellung noch mal. Der OP wollte zur Laufzeit erst die Entscheidung treffen, mit welcher Variablen gearbeitet werden soll.

                    MfG ChrisB

                    --
                    Light travels faster than sound - that's why most people appear bright until you hear them speak.
        2. Hallo Hans,

          das Problem ist, dass wenn ich mehrere Variablen habe ...

          schon mal an Arrays gedacht?

          Auf globale Variablen kann man auch über

          var Globales = "irgendwas";

          alert( window["Globales"] );

          
          >   
          > zugreifen.  
          >   
          >   
          > Gruß, Jürgen  
          >   
            
          Cool! Vielen Dank, genau das habe ich gesucht.
          
          1. Auf globale Variablen kann man auch über

            var Globales = "irgendwas";

            alert( window["Globales"] );

            
            > >   
            > > zugreifen.  
            > >   
            > >   
            > > Gruß, Jürgen  
            > >   
            >   
            > Cool! Vielen Dank, genau das habe ich gesucht.  
              
            Das läßt sich aus deiner Frage aber nicht erkennen. Weil so wie du die Frage gestellt hast, ändert die Art und Weise des Zugriffs ja nichts an deinem Problem.  
              
            Struppi.