"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > ES6 ऐरे डिस्ट्रक्चरिंग: यह अपेक्षा के अनुरूप काम क्यों नहीं करता?

ES6 ऐरे डिस्ट्रक्चरिंग: यह अपेक्षा के अनुरूप काम क्यों नहीं करता?

2024-11-06 को प्रकाशित
ब्राउज़ करें:552

ES6 Array Destructuring: Why Doesn\'t It Work As Expected?

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 में डिस्ट्रक्चरिंग असाइनमेंट संचालित होते हैं जैसा कि अपेक्षित था, अप्रत्याशित मूल्य स्वैप और अपरिभाषित असाइनमेंट को रोकना।

विज्ञप्ति वक्तव्य यह लेख यहां पुनर्मुद्रित है: 1729721303 यदि कोई उल्लंघन है, तो कृपया इसे हटाने के लिए स्टडी_गोलंग@163.कॉम से संपर्क करें।
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3