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 :
var hello = 'hello world';
Lassen Sie es uns in ein Objekt einkapseln. Wir nennen das Objekt vv (variable Variablen):
var vv = {
'hello': 'hello world',
//Other variable variables come here.
},
referToHello = 'hello';
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:
console.log(vv[referToHello]); //Output: hello world
Die Antwort auf Ihre Frage
Wenden wir dies auf den Code an, den Sie in der ursprünglichen Frage angegeben haben:
var vv = {
'x': 'variable',
'variable': 'hello world!'
};
console.log(vv[vv['x']]); //Displays "hello, world!"
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.
var elementIds = [],
elements = ['message','fillOrStroke','sizePicker','colorPicker']; //The items in this array could be defined automatically via an input, database query, event, etc.
elements.forEach( (element) => {
elementIds[element] = document.getElementById(element);
});
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 generell elementIds
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.