PHP'den farklı olarak JavaScript, globals dizisine (şu anda bildirilen tüm değişken adlarına başvurular içeren) erişim sunmaz. Bu nedenle JavaScript, değişken değişkenler için yerel destek sunmaz. Bununla birlikte, tüm değişkenlerinizi bir dizinin veya bir nesnenin parçası olarak tanımladığınız sürece bu özelliği taklit edebilirsiniz. Bu da sizin için bir gloab dizisi oluşturacaktır. Örneğin, değişkeni hello
genel kapsamda şu şekilde bildirmek yerine :
var hello = 'hello world';
onu bir nesnenin içine sarmalayalım. Bu nesneye vv (değişken değişkenler) diyeceğiz:
var vv = {
'hello': 'hello world',
//Other variable variables come here.
},
referToHello = 'hello';
Şimdi değişkeni indeksine göre ifade edebiliriz ve dizi indeksleri bir değişken kullanılarak sağlanabildiğinden, fiilen bir değişken değişkeni kullanıyoruz:
console.log(vv[referToHello]); //Output: hello world
Sorunuzun Cevabı
Bunu, orijinal soruda sağladığınız koda uygulayalım:
var vv = {
'x': 'variable',
'variable': 'hello world!'
};
console.log(vv[vv['x']]); //Displays "hello, world!"
Pratik Bir Kullanım
Önceki kod gülünç derecede külfetli ve pratik görünmese de, JavaScript'te bu tür kapsüllemeyi kullanan değişken değişkenlerin pratik kullanımları vardır. Aşağıdaki örnekte, tanımsız sayıda HTML öğesinin kimliğini elde etmek için aynı kavramı kullanıyoruz.
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);
});
Bu örnek elementIds
, her bir öğenin kimliğine bağlı olarak değişken değişkenleri (anahtarlar ) bildirir ve söz konusu öğenin düğümünü her değişkenin değeri olarak atar. Ve genel değişkenleri JavaScript'te kullanmak genellikle tavsiye elementIds
edilmediğinden , değişken değişkenlerinize benzersiz bir kapsam vermek (bu örnekte, onları dizi içinde bildirmek ) sadece düzgün değil, aynı zamanda daha sorumludur.