Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Javascript

जावास्क्रिप्ट में सख्त समानता बनाम ढीली समानता ऑपरेटरों के बीच अंतर क्या है?

जावास्क्रिप्ट में सख्त समानता बनाम ढीले समानता ऑपरेटरों के बीच अंतर के बारे में जानें, और यह क्यों मायने रखता है।

जावास्क्रिप्ट में, आप मूल्यों की तुलना करने के लिए दो समानता ऑपरेटरों का उपयोग कर सकते हैं, ढीला समानता ऑपरेटर == (डबल बराबर) और सख्त समानता ऑपरेटर === (ट्रिपल बराबर)। वे सतह पर समान दिखाई देते हैं, लेकिन वे नहीं हैं, और अंतर को समझना महत्वपूर्ण है क्योंकि यदि आप नहीं करते हैं, तो आप बग में भाग सकते हैं।

अपने कंसोल में निम्न कोड चलाने का प्रयास करें:

let a = 4 // number
let b = "4" // string

console.log(a == b) // output: true

जावास्क्रिप्ट क्यों कहता है कि उपरोक्त सत्य है जब यह नहीं है? हमारे पास संख्या . प्रकार का मान है स्ट्रिंग . प्रकार के मान से तुलना की जा रही है - तो वे समान मूल्य कैसे हो सकते हैं?

ऐसा इसलिए है क्योंकि जब आप ढीले समानता ऑपरेटर का उपयोग करते हैं == यह ऑपरेंड को समान . में कनवर्ट करता है टाइप करें (यदि वे पहले से नहीं हैं), और फिर उनके मूल्यों की तुलना करते हैं।

इस प्रक्रिया को टाइप ज़बरदस्ती . कहा जाता है (जब दो मानों की तुलना बाद . की जाती है उन्हें एक सामान्य प्रकार में बदलने का प्रयास)।

तो ऊपर के उदाहरण में, true . का आउटपुट सही है, क्योंकि मानों की तुलना करने से पहले, उनके मान प्रकारों को समान रूप में परिवर्तित कर दिया जाता है।

वाह, यह बेवकूफी है!

मैं सहमत हूं, लेकिन ऐसा ही है। महत्वपूर्ण यह है कि आप जावास्क्रिप्ट के इस असुविधाजनक "क्विर्क" से अवगत हैं।

और यहीं पर सख्त समानता ऑपरेटर === आता है और दिन बचाता है क्योंकि यह मान प्रकार को परिवर्तित नहीं करता है, यह सख्ती से मूल्य प्रकारों की तुलना करता है और फिर समानता की जांच करता है:

let a = 4
let b = "4"

console.log(a === b)
// output: false

अब हमें false मिलता है , क्योंकि हालांकि दोनों चर (ए और बी) में "4" मान होता है, ऑपरेंड अलग-अलग मान प्रकार होते हैं (ए एक संख्या मान है, बी एक स्ट्रिंग मान है)।

गैर-सख्त के विपरीत == ऑपरेटर, सख्त === ऑपरेटर आपको अनुमानित आउटपुट देता है, यही वजह है कि अधिकांश डेवलपर्स == . का उपयोग करने के खिलाफ सलाह देते हैं ।

क्या कोई अच्छा कारण है जावास्क्रिप्ट में गैर-सख्त तुलना ऑपरेटर का उपयोग करने के लिए?

शायद ही कभी, लेकिन मुझे यकीन है कि आप कुछ उदाहरण पा सकते हैं। एक नियम के रूप में, सख्त === . का उपयोग करने के लिए डिफ़ॉल्ट समानता ऑपरेटर, जब तक कि कोई स्पष्ट न हो गैर-सख्त == का उपयोग करने का कारण समानता ऑपरेटर। इस तरह आप गलत समानता ऑपरेटर का उपयोग करके अपने कोड में बग को दूर कर सकते हैं, और यह हमेशा एक बोनस होता है।


  1. जावास्क्रिप्ट में सख्त समानता बनाम ढीली समानता।

    ढीला समानता ऑपरेटर == हमें दो या दो से अधिक ऑपरेंड की तुलना उनके मान को पहले एक सामान्य प्रकार में परिवर्तित करके और फिर उनके बीच समानता की जांच करने की अनुमति देता है। सख्त समानता ऑपरेटर === हमें मूल्यों के साथ-साथ उनके प्रकारों के बीच समानता की जांच करके दो या दो से अधिक ऑपरेंड की तुलना करने की अ

  1. जावास्क्रिप्ट में ढीली समानता

    लूज इक्वलिटी ऑपरेटर == हमें दो या दो से अधिक ऑपरेंड की तुलना पहले उनके मान को एक सामान्य प्रकार में परिवर्तित करके और फिर उनके बीच समानता की जांच करने की अनुमति देता है। जावास्क्रिप्ट में ढीली समानता को लागू करने के लिए कोड निम्नलिखित है - उदाहरण <!DOCTYPE html> <html lang="en"&g

  1. पायथन में =और ==ऑपरेटरों के बीच क्या अंतर है?

    पायथन में =प्रतीक को असाइनमेंट . के रूप में परिभाषित किया गया है ऑपरेटर। इसके बाईं ओर एक चर और इसके दाईं ओर एक अभिव्यक्ति की आवश्यकता होती है। दाईं ओर के व्यंजक का मान बाईं ओर के चर को सौंपा गया है। चर के व्यंजक और नाम विनिमेय नहीं हैं। >>> a=10 >>> b=20 >>> c=a+b >>