यह एक वस्तु विनाशकारी असाइनमेंट है। मेरी तरह, आपको यह आश्चर्यजनक लग सकता है क्योंकि ES6 ऑब्जेक्ट डिस्ट्रक्टिंग सिंटैक्स जैसा दिखता है, लेकिन ऑब्जेक्ट शाब्दिक निर्माण की तरह व्यवहार नहीं करता है।
यह आपके द्वारा चलाए गए बहुत ही संक्षिप्त रूप का समर्थन करता है, साथ ही साथ फ़ील्ड और डिफ़ॉल्ट तर्क का नाम बदलकर:
अनिवार्य रूप से, यह {oldkeyname: newkeyname = defaultvalue, ...} है। ':' कुंजी / मूल्य विभाजक नहीं है; '=' है।
इस भाषा के डिजाइन के निर्णय का कुछ नतीजा यह है कि आपको ऐसा करना पड़ सकता है
; ({A, b} = some_object);
अतिरिक्त पार्न्स एक ब्लॉक के रूप में बाएं घुंघराले ब्रेसिज़ को पार्स करने से रोकते हैं, और अग्रणी अर्धविराम, पिछले लाइन पर एक फ़ंक्शन को फ़ंक्शन कॉल के रूप में पार्स होने से रोकता है।
अधिक जानकारी के लिए देखें:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment
वस्तु विनाशकारी असाइनमेंट के दौरान महत्वपूर्ण त्रुटियां, फेंकना नहीं; आप बस "अपरिभाषित" मूल्यों के साथ समाप्त होते हैं, चाहे वह एक महत्वपूर्ण त्रुटि हो या कोई अन्य त्रुटि जो चुपचाप 'अपरिभाषित' के रूप में प्रचारित हो गई।
> var {rsienstr: foo, q: bar} = {p:1, q:undefined};
undefined
> foo
undefined
> bar
undefined
>