Rolf B: mit String Var auslesen

Beitrag lesen

Hallo Berta,

ja, Computer tun immer das, was man ihnen sagt. Das ist nicht unbedingt das, was man will. Der Ausdruck [ 'foo' ] erzeugt ein Array mit einem Eintrag, nämlich dem String "foo". Dementsprechend erzeugt [ eintrag ] ein Array mit einem Eintrag, dessen Wert der Inhalt der Variablen eintrag ist.

Deine var Angaben zu Eintrag_1, Eintrag_2 und Eintrag_3 erzeugen globale Variablen. Diese findest Du als Eigenschaften des window-Objekts wieder. Mit console.log(window[eintrag]); würdest Du die Werte also bekommen.

Aber Du solltest das nicht tun. JavaScript-Programme sollten den globalen Scope scheuen wie der Teufel das Weihwasser. Ihr Gebrauch führt bei größeren Programmen oft genug ins Chaos, weil man entweder den gleichen Variablennamen in 2 Modulen versehentlich nutzt, und sich was überschreibt, oder - schlimmer noch - absichtlich nutzt und dann nicht mehr überschaut, wer nun wann und warum an welcher Variablen herumpfuscht. Mach Dir lieber ein Container-Objekt, wo deine „Variablen“ als Eigenschaften drinstehen, das kannst Du dann im Zweifelsfall sauber als Parameter durchreichen bzw. brauchst die Funktion gar nicht mehr.

var Eintraege = ["Eintrag_1", "Eintrag_2", "Eintrag_3"];

var EintragPool = {};
EintragPool.Eintrag_1 = [{hudri: 24} /* etc. */];
EintragPool.Eintrag_2 = [{wudri: 42} /* etc. */];
EintragPool.Eintrag_3 = [{oje: 12} /* etc. */];

var testdurchlauf_Var_auslesen = Eintraege.map(function(eintrag) {
	console.log(EintragPool[eintrag]);
});

Und dann, wenn dein Beispielcode keine globalen Variablen mehr erzeugt, funktioniert der trick mit window[eintrag] sowieso nicht mwehr.

Rolf

--
sumpsi - posui - clusi