User Input als Variable-Name übernehmen?

4 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Mit Eval( string ) wird ein String als aktiver Code ausgeführt.

Eval ('var '+ Input +'=irgendwas')

Eval() ist eine "gefährliche" Funktion, egal was ein Nutzer als String eingibt/übergibt es wird ausgeführt.

Als Programmierer sollte man diese Funktion meiden wie die Pest, denn damit öffnet man den eigenen Code den Launen des Nutzers.

Mir erschließt sich nicht, weshalb Du mit einem unvorhersehbaren Variablennamen arbeiten willst? Ich ahne zwar was Dir vorschwebt😏, ...lass es...

Entscheide mit einem Switch-Statement

Darius1308 
Fragesteller
 14.11.2021, 15:06

Nein, du ahnst es nicht.
Es war einfach eine Blitzidee.
Ich wollte es einfach mal ausprobieren.

Und ich finde das wenn ich den UserInput als Variablennahme nehme kann ja nix anderes ausgeführt werden als: Variable XXX erstellen, Fehler weil Leerzeichen oder Zahlen am Anfang des Inputs etc was man aber mit Statements vermeiden kann.

Solange der Anfang nur VAR ist & das was in der variable bzw. dem Array ist schon geschrieben ist. können die ja schreiben was se wollen. Passieren tut nur eins. Die Variable wird erstellt, oder eben aber auch nicht.

0

Wozu brauchst man das denn? oO

Das ist gefährlich! Und verdammt schlechter Programmierstil.

Der User könnte damit andere Variablen überschreiben und dadurch Fehlfunktionen in deinem Programm herbeirufen. Wenn Serverkommunikation im Spiel ist und dieses Fehlverhalten serverseitig dann nicht richtig abgefangen wird, wird es richtig mies....

Wenn du es wirklich brauchst, solltest du deinen Code dringendst überarbeiten.

  1. var color = userInput; //oder direkt prompt();
  2. Mit der Usereingabe in der Variable color weiterarbeiten

Mir fält wirklich absolut kein Anwendungsfall ein, wo es sinnvoll ist, den User den Variablenname, den er nie zu Gesicht bekommen wird, bestimmen zu lassen,

Woher ich das weiß:Berufserfahrung
Darius1308 
Fragesteller
 14.11.2021, 15:07

War ne Blitzidee, ich lerne gerade einfach noch. :)

0

Hey,

warum willst du das die Variable dann so heisst und nicht einfach den Wert des Inputs hat? Das die Variable so heisst geht meiner Meinung nach nicht und ist auch nicht der Sinn.

Mfg Jannick (L1nd)

Woher ich das weiß:Hobby
Darius1308 
Fragesteller
 11.11.2021, 22:21

Damit ich zb. per Funktion eine Variable erstellen kann. Und dann den User Input nehme und diesen als Variablenname nehmen kann.

Und funktioniert das vielleicht nicht irgendwie mit Eval?

0
JanMarcel01  11.11.2021, 22:23
@Darius1308

Es sollte doch reichen, wenn der Wert einer Variable den Wert des Inputs hat

0
Darius1308 
Fragesteller
 11.11.2021, 22:26
@JanMarcel01

Beispiel:

const = (nameVonArray, String1, String2, String3){
nameVonArray = prompt("Name")
String1 = prompt("Inhalt");
String2 = prompt("Inhalt");
String3 = prompt("Inhalt");
//Wenn alles passt und nix leer ist (if(String1==null){}...
eval("var "+nameVonArray+'=['+String1+","+String2+","+String3+"]");
}
0

Das klingt alles nach ziemlichem Humbug der in eval() endet.
Warum willst du das überhaupt erreichen?

Darius1308 
Fragesteller
 11.11.2021, 22:21

Wie unter JanMarcel's Antwort schon geschrieben. :)

Damit ich zb. per Funktion eine Variable erstellen kann. Und dann den User Input nehme und diesen als Variablenname nehmen kann.

Und funktioniert das vielleicht nicht irgendwie mit Eval?

0
FANTH0MAS  11.11.2021, 22:27
@Darius1308

Hä? Ich versteh es nicht. Was speicherst du eigentlich dann in der Variable?
Du hast in dem obrigen Beispiel dann eine Variable Rot und da steht dann nix drin.

1
Darius1308 
Fragesteller
 11.11.2021, 22:27
@FANTH0MAS

Beispiel:

const = (nameVonArray, String1, String2, String3){
nameVonArray = prompt("Name")
String1 = prompt("Inhalt");
String2 = prompt("Inhalt");
String3 = prompt("Inhalt");
//Wenn alles passt und nix leer ist (if(String1==null){}...
eval("var "+nameVonArray+'=['+String1+","+String2+","+String3+"]");
}
0
Darius1308 
Fragesteller
 11.11.2021, 22:28
@Darius1308

Das könnte ich ja dann alles im Nachhinein noch bearbeiten.

e.g. Rot[x]="";

0
FANTH0MAS  11.11.2021, 22:30
@Darius1308

Ich würd ja das Konzept dahinter nochmal überdenken. Eigentlich sind Variablennamen nicht von irgendwelchen Userinputs abhängig. Und mit eval würd ich sowieso überhaupt nicht anfangen. Das bringt dir nur Sicherheitslücken in den Code.

1
Darius1308 
Fragesteller
 11.11.2021, 22:32
@FANTH0MAS

Ist mir klar,

nur ... weshalb frage ich denn dann hier?

Ich mach das auch nicht aus Humbug. Ich frage damit ich eine Antwort darauf bzw. einen Hinweis oder eine Lösung bekomme, nicht das mir hier Stundenlang gesagt wird das ich mir das Konzept denn noch einmal überdenken sollte. Ich brauche Hilfe, Hinweise oder gar besser eine Lösung zu meinem Problem.

(Wenn das etwas unhöflich rüberkommt tut es mir leid)

0
FANTH0MAS  11.11.2021, 22:42
@Darius1308
Na dann...

let nameVariable = "MeineVariable";
eval(nameVariable+" = 123");
console.log(MeineVariable); // 123
1