Avatar ·

क्या JavaScript में (a == 1 && a == 2 && a == 3) true हो सकता है?

सभी को नमस्कार! मैं JavaScript में नया हूँ और एक इंटरव्यू में अजीब समस्या का सामना किया। मुझसे पूछा गया: क्या अभिव्यक्ति `(a == 1 && a == 2 && a == 3)` कभी सत्य हो सकती है? पहली नज़र में यह पूरी तरह बेतुका लगता है। एक ही वेरिएबल `a` एक साथ 1, 2 और 3 के बराबर कैसे हो सकता है? किसी भी सामान्य प्रोग्रामिंग भाषा में यह असंभव है। लेकिन मुझे बताया गया कि JavaScript में कुछ तरकीबें हैं जो ऐसा करने देती हैं। मैं समझता हूँ कि यह JavaScript में type coercion की विशेषताओं से संबंधित है, लेकिन यह नहीं समझ पा रहा कि यह वास्तव में कैसे काम करता है। यदि हम सख्त तुलना `===` का उपयोग करते हैं, तो ऐसी चाल निश्चित रूप से काम नहीं करेगी, लेकिन गैर-सख्त `==` के साथ कुछ खामियाँ हैं। क्या कोई समझा सकता है कि यह कैसे संभव है? मुझे न केवल विशिष्ट कार्यान्वयन में रुचि है, बल्कि सैद्धांतिक आधार में भी — JavaScript ऐसी अजीब चीजों की अनुमति क्यों देता है? और क्या इस जादू का कोई व्यावहारिक उपयोग है या यह सिर्फ इंटरव्यू के लिए एक पहेली है? उदाहरण कोड जो मैंने लिखा: