आइए '?.' को एक उदाहरण से समझने की कोशिश करते हैं।
23 साल के पुरुष इंसान का वर्णन करने वाले निम्नलिखित ऑब्जेक्ट उदाहरण पर विचार करें -
कॉन्स्ट बीइंग ={मानव:{पुरुष:{आयु:23}}};
अब मान लें कि हम इस ऑब्जेक्ट की उम्र संपत्ति तक पहुंचना चाहते हैं। बहुत आसान है, है ना? हम नीचे दिए गए कोड की तरह एक्सेस करने के लिए केवल चेनिंग का उपयोग करेंगे -
उदाहरण
कॉन्स्ट बीइंग ={मानव:{पुरुष:{आयु:23}}};कंसोल.लॉग(बीइंग.ह्यूमन.मेल.एज);
आउटपुट
कंसोल आउटपुट इस प्रकार है -
23
अब मान लीजिए कि आप कुछ तकनीकी कारणों से पुरुष की महिला के प्रति आपत्तिजनक होने की संपत्ति को बदल देते हैं या कुछ और।
अब हमारे चेनिंग स्टेटमेंट का क्या होता है, यह एक टाइप एरर कहेगा जो मानव की अपरिभाषित संपत्ति तक नहीं पहुंच सकता है। क्या ऐसी स्थितियों में हमारे कोड को कोई त्रुटि न फेंकने का कोई तरीका मौजूद है। हां, और यहीं पर '?.' उर्फ वैकल्पिक चेनिंग हमारे बचाव में आती है।
वैकल्पिक चेनिंग जो करता है वह काफी सरल है, यह सामान्य परिस्थितियों में सामान्य चेनिंग की तरह व्यवहार करता है, लेकिन जब हम अपने कोड को एक त्रुटि फेंकने के बजाय अपरिभाषित से किसी भी संपत्ति तक पहुंचने का प्रयास करते हैं, तो यह चेनिंग को तब और वहां समाप्त कर देता है और अपरिभाषित लौटाता है ताकि शेष हिस्सा कोड सामान्य रूप से कार्य करता है।
हमारे पिछले उदाहरण पर विचार करें (वैकल्पिक श्रृखंला) -
उदाहरण
कॉन्स्ट बीइंग ={मानव:{पुरुष:{आयु:23}}}कंसोल.लॉग(बीइंग?.ह्यूमन?.महिला?.आयु);
आउटपुट
एरर फेंकने के बजाय, आउटपुट होगा -
<पूर्व>अपरिभाषित