डबल इक्वल्स (==) - अब्स्ट्रैक्ट इक्वलिटी
== (डबल इक्वल्स) टाइप कन्वर्जन (टाइप कोएरशन) करने के बाद तुलना करता है। यह ऑपरेंड्स को समान टाइप में बदलता है फिर तुलना करता है।
5 == 5 // true '5' == 5 // true (स्ट्रिंग नंबर में कन्वर्ट) 5 == '5' // true 0 == false // true (false → 0) "" == 0 // true null == undefined // true
ट्रिपल इक्वल्स (===) - स्ट्रिक्ट इक्वलिटी
=== (ट्रिपल इक्वल्स) टाइप कन्वर्जन नहीं करता। दोनों वैल्यू और टाइप समान होने चाहिए।
5 === 5 // true 5 === '5' // false (नंबर !== स्ट्रिंग) 0 === false // false (नंबर !== बूलियन) "" === 0 // false null === undefined // false
ऑब्जेक्ट तुलना
var v1 = {'value': 'key'};
var v2 = {'value': 'key'};
v1 === v2 // false (अलग ऑब्जेक्ट रेफरेंस)
v1 == v2 // false (ऑब्जेक्ट्स के लिए भी false)
सिफारिश: हमेशा === उपयोग करें
| परिदृश्य | सिफारिश |
|---|---|
| सामान्य तुलना | === उपयोग करें |
| null/undefined चेक | == null उपयोग कर सकते हैं (null और undefined दोनों पकड़ता है) |
| फाल्सी वैल्यू चेक | स्पष्ट तुलना करें (=== 0, === "", === false) |
क्यों === बेहतर है?
- पूर्वानुमेय: कोई अप्रत्याशित टाइप कन्वर्जन नहीं
- तेज़: टाइप कन्वर्जन का ओवरहेड नहीं
- पठनीय: इरादा स्पष्ट होता है
- बग रोकता है:
[] == falseजैसे आश्चर्यजनक परिणामों से बचाता है
नियम: डिफ़ॉल्ट रूप से हमेशा === उपयोग करें। == केवल तब उपयोग करें जब आप जानबूझकर टाइप कोएरशन चाहते हों (दुर्लभ)।