Paul: Javascript: Array aus Funktion auslagern

Moin,
in meiner function: eine array, eine for-Schleife. Die Schleife läuft das array durch und macht halt ein paar Dinge :-)

Da die Funktion einige Male (auch nach Bentzer-Mausklick) ausgeführt wird, möchte ich das array aus der Funktion raus haben, damit es nicht jedes mal neu erstellt werden muss.
Ist hier ein globales array richtig oder kann man das auch anders machen?

Danke,
Paul

  1. Hi,

    wenn du das Array nur in dieser Funktion brauchst könntest du das so machen:

    var myFunction = (function(){  
      var myArray = [];// Hier der Code der nur einmal ausgeführt werden soll. Also z.B. das initialisieren des Arrays  
      return function(){// Das hier ist die eigentlich function, in ihr kannst du auf myArray zugreifen  
        for(){}  
      }  
    })()
    

    Ob das jetzt die Lösung für dein Problem ist kann ich nicht sagen, da mir da der Kontext dazu fehlt.

    ~dave

    1. Entschuldige meine Unkenntnis.
      Aus Deinem Beispiel sollte am Besten einmal 'a', 'b', 'c', 'for', 'for, 'for' rauskommen. bei jedem anderen Aufruf halt dann nur 'c', und 'for', 'for', 'for'.

      var myFunction = (function(){
      alert('a');
        var myArray = [1, 2, 3];// Hier der Code der nur einmal ausgeführt werden soll. Also z.B. das initialisieren des Arrays
      alert('b');
        return function(){// Das hier ist die eigentlich function, in ihr kannst du auf myArray zugreifen
      alert('c');
          for(i in myArray){
            alert('for');
          }
        }
      })()

      1. Hi,

        Aus Deinem Beispiel sollte am Besten einmal 'a', 'b', 'c', 'for', 'for, 'for' rauskommen. bei jedem anderen Aufruf halt dann nur 'c', und 'for', 'for', 'for'.

        das tuts auch, du musst die Funktion dann nur noch aufrufen:

        myFunction();

        Jedes mal wenn du das tust, wird 'c', 'for', 'for', 'for' ausgegeben.

        ~dave

        1. das tuts auch, ...

          ... bei mir :-)

          Vielen Dank! Genau das was ich gesucht habe!