PHP के विपरीत, जावास्क्रिप्ट ग्लोबल्स ऐरे तक पहुंच प्रदान नहीं करता है (जिसमें वर्तमान में घोषित सभी चर नामों के संदर्भ हैं)। जैसे, जावास्क्रिप्ट चर चर के लिए मूल समर्थन प्रदान नहीं करता है। हालाँकि, आप इस सुविधा का अनुकरण तब तक कर सकते हैं जब तक आप किसी सरणी या ऑब्जेक्ट के हिस्से के रूप में अपने सभी चर को परिभाषित करते हैं। यह बदले में आप के लिए एक gloabls सरणी बना देगा। उदाहरण के लिए, hello
इस तरह वैश्विक दायरे में परिवर्तनशील घोषित करने के बजाय :
var hello = 'hello world';
आइए इसे किसी वस्तु के अंदर कूट दें। हम उस वस्तु को vv (परिवर्तनशील चर) कहेंगे:
var vv = {
'hello': 'hello world',
//Other variable variables come here.
},
referToHello = 'hello';
अब हम इसे अनुक्रमणिका द्वारा चर का उल्लेख कर सकते हैं, और चूंकि सरणी अनुक्रमणिका को एक चर का उपयोग करके प्रदान किया जा सकता है, हम वास्तव में चर चर का उपयोग कर रहे हैं:
console.log(vv[referToHello]); //Output: hello world
आपके सवाल का जवाब
मूल प्रश्न में आपके द्वारा दिए गए कोड पर लागू होते हैं:
var vv = {
'x': 'variable',
'variable': 'hello world!'
};
console.log(vv[vv['x']]); //Displays "hello, world!"
एक व्यावहारिक उपयोग
जबकि पिछला कोड हास्यास्पद रूप से बोझिल और अव्यवहारिक हो सकता है, इस प्रकार के एनकैप्सुलेशन का उपयोग करके जावास्क्रिप्ट में चर चर के व्यावहारिक उपयोग हैं। नीचे दिए गए उदाहरण में हम HTML तत्वों की एक अपरिभाषित संख्या की आईडी प्राप्त करने के लिए उसी अवधारणा का उपयोग करते हैं।
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);
});
यह उदाहरण elementIds
प्रत्येक तत्व की आईडी के आधार पर चर चर (चाबियाँ ) घोषित करता है , और प्रत्येक चर के मूल्य के रूप में उक्त तत्व के नोड को असाइन करेगा। और चूँकि जावास्क्रिप्ट में वैश्विक चर का उपयोग करते हुए आमतौर पर आपके चर चर को एक अनोखा दायरा दिया जाता है (इस उदाहरण में, उन्हें elementIds
ऐरे के अंदर घोषित करना ) न केवल साफ-सुथरा है, बल्कि अधिक जिम्मेदार भी है।