ES6 ऐरे डिस्ट्रक्चरिंग: अप्रत्याशित व्यवहार
ES6 में, ऐरे के लिए डिस्ट्रक्चरिंग असाइनमेंट से अप्रत्याशित परिणाम हो सकते हैं, जिससे प्रोग्रामर हैरान रह जाते हैं। ऐसा एक उदाहरण निम्नलिखित कोड द्वारा दर्शाया गया है:
let a, b, c
[a, b] = ['A', 'B']
[b, c] = ['BB', 'C']
console.log(`a=${a} b=${b} c=${c}`)
इच्छित आउटपुट:
a=A b=BB c =C
वास्तविक आउटपुट:
a=BB b=C c=अपरिभाषित
स्पष्टीकरण:
विपरीत अपेक्षा के अनुरूप, यह कोड वांछित आउटपुट नहीं देता है। इसके बजाय, यह b और c के मानों की अदला-बदली करता है, जिससे c अपरिभाषित रह जाता है। यह समझने के लिए कि ऐसा क्यों होता है, हमें कोड की बारीकी से जांच करने की आवश्यकता है। स्पष्ट अर्धविरामों के बिना, कोड को एकल कथन के रूप में पार्स किया जाता है:
let a = unDefined, b = unDefined, c = unDefined; [ए, बी] = (['ए', 'बी'] [(बी, सी)] = ['बीबी', 'सी']); कंसोल.लॉग(`a=${a} b=${b} c=${c}`);
विवरण का विश्लेषण:
let a = undefined, b = undefined, c = undefined;
[a, b] = (['A', 'B']
[(b, c)] = ['BB', 'C']);
console.log(`a=${a} b=${b} c=${c}`);
[ए, बी] = (['ए', 'बी'] एक विनाशकारी असाइनमेंट है, जो मूल कोड के समान है।[(बी, सी)] = ['बीबी' , 'सी'] एक असाइनमेंट अभिव्यक्ति है जो बाएं हाथ के ऑपरेंड को सरणी ['बीबी', 'सी'] निर्दिष्ट करती है। यह अभिव्यक्ति उसी सरणी का मूल्यांकन करती है।
['ए', 'बी '][…] एक सरणी शाब्दिक पर एक संपत्ति संदर्भ है, जो अपरिभाषित का मूल्यांकन करता है।यह समझ सुनिश्चित करती है कि ES6 में डिस्ट्रक्चरिंग असाइनमेंट संचालित होते हैं जैसा कि अपेक्षित था, अप्रत्याशित मूल्य स्वैप और अपरिभाषित असाइनमेंट को रोकना।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3