Ich weiß, dass es in PHP möglich ist, "variable" Variablen zu haben. Beispielsweise
$x = "variable";
$$x = "hello, world!";
echo $variable; // displays "hello, world!"
Ist es möglich, eine Variable mit ihrem Namen als Zeichenfolge in Javascript zu bezeichnen? Wie würde es gemacht werden?
javascript
variables
variable-variables
ShoeLace1291
quelle
quelle
Antworten:
Es gibt keine einzige Lösung dafür (nun ja
eval
, aber wir sollten das nicht ernsthaft in Betracht ziehen). Es ist möglich, dynamisch über auf einige globale Variablen zuzugreifenwindow
, dies funktioniert jedoch nicht für lokale Variablen einer Funktion. Globale Variablen, deren Eigenschaft nicht wird ,window
sind Variablen, die mitlet
undconst
undclass
es definiert sind.Es gibt fast immer eine bessere Lösung als die Verwendung variabler Variablen! Stattdessen sollten Sie sich Datenstrukturen ansehen und die richtige für Ihr Problem auswählen.
Wenn Sie einen festen Satz von Namen haben, wie z
Speichern Sie diese Namen / Werte als Eigenschaften eines Objekts und verwenden Sie die Klammernotation , um sie dynamisch nachzuschlagen:
In ES2015 + ist dies für vorhandene Variablen mithilfe der präzisen Eigenschaftsnotation noch einfacher :
Wenn Sie "fortlaufend" nummerierte Variablen haben, wie z
Dann sollten Sie stattdessen ein Array verwenden und einfach den Index verwenden, um auf den entsprechenden Wert zuzugreifen:
quelle
Wenn Sie dies unbedingt tun möchten, können Sie entweder eval () verwenden:
Oder mit dem Fensterobjekt:
http://www.hiteshagrawal.com/javascript/dynamic-variables-in-javascript
quelle
eval
Im strengen Modus können keine lokalen Variablen erstellt werden. Ein indirekter Aufruf kann jedoch globale Variablen erstellen.Sie können eine Variable in Javascript nur mit einer Zeichenfolge referenzieren
Sie können Variablen und Objekte in Variablen auch festlegen und referenzieren.
quelle
Im Gegensatz zu PHP bietet JavaScript keinen Zugriff auf das globale Array (das Verweise auf alle derzeit deklarierten Variablennamen enthält). Daher bietet JavaScript keine native Unterstützung für variable Variablen. Sie können diese Funktion jedoch emulieren, solange Sie alle Ihre Variablen als Teil eines Arrays oder eines Objekts definieren. Dadurch wird wiederum ein gloabls-Array für Sie erstellt. Anstatt die Variable
hello
im globalen Bereich wie folgt zu deklarieren :Lassen Sie es uns in ein Objekt einkapseln. Wir nennen das Objekt vv (variable Variablen):
Jetzt können wir die Variable anhand ihres Index referenzieren, und da Array-Indizes mithilfe einer Variablen bereitgestellt werden können, verwenden wir de facto eine Variablenvariable:
Die Antwort auf Ihre Frage
Wenden wir dies auf den Code an, den Sie in der ursprünglichen Frage angegeben haben:
Eine praktische Anwendung
Während der vorherige Code lächerlich umständlich und unpraktisch erscheint, gibt es praktische Verwendungen für variable Variablen in JavaScript, die diese Art der Kapselung verwenden. Im folgenden Beispiel verwenden wir dasselbe Konzept, um die ID einer undefinierten Anzahl von HTML-Elementen abzurufen.
In diesem Beispiel werden Variablenvariablen (Schlüssel eingeben
elementIds
) basierend auf der ID jedes Elements deklariert und der Knoten dieses Elements als Wert jeder Variablen zugewiesen. Und da die Verwendung globaler Variablen in JavaScript generellelementIds
nicht empfohlen wird, ist es nicht nur ordentlich, Ihren Variablenvariablen einen eindeutigen Bereich zu geben (in diesem Fall, sie innerhalb des Arrays zu deklarieren ), sondern auch verantwortungsbewusster.quelle
Natürlich kannst du, aber nicht. Die Variablen müssen global sein.
quelle
quelle
Sie können die JavaScript-
eval(str)
Funktion verwenden.Diese Funktion konvertiert die bereitgestellte Zeichenfolge in JS-Code und führt sie dann aus.
Beispielsweise:
Um es als variable Variable zu verwenden, können Sie Folgendes tun:
Dies erzeugt genau die gleiche Ausgabe wie:
(Das Beispiel stammt aus dem PHP-Handbuch zu variablen Variablen .)
quelle