मैं typeof foo === "undefined"हर जगह का उपयोग कर रहा हूँ । वह कभी गलत नहीं हो सकता।
मैं इस कारण की कल्पना करता हूं कि jQuery दो अलग-अलग तरीकों की सिफारिश क्यों करता है कि वे undefinedउस फ़ंक्शन के भीतर अपने स्वयं के चर को परिभाषित करते हैं जो jQuery कोड में रहता है, इसलिए उस फ़ंक्शन के भीतर undefinedबाहर से छेड़छाड़ से सुरक्षित है। मैं यह भी कल्पना करूंगा कि किसी व्यक्ति ने दो अलग-अलग तरीकों से बेंचमार्क किया है और पता चला है कि foo === undefinedयह तेज है और इसलिए यह तय किया कि यह जाने का रास्ता है। [अद्यतन: जैसा कि टिप्पणियों में कहा गया है, के साथ तुलना undefinedभी थोड़ी कम है, जो एक विचार हो सकता है।] हालांकि, व्यावहारिक स्थितियों में लाभ पूरी तरह से महत्वहीन होगा: यह जांच कभी भी, कभी भी किसी भी तरह की अड़चन नहीं होगी, और क्या आपका हारना महत्वपूर्ण है: तुलना के लिए एक मेजबान वस्तु की संपत्ति का मूल्यांकन एक त्रुटि फेंक सकता है जबकि एtypeof चेक कभी नहीं होगा।
उदाहरण के लिए, XML को पार्स करने के लिए IE में निम्नलिखित का उपयोग किया जाता है:
var x = new ActiveXObject("Microsoft.XMLDOM");
यह जाँचने के लिए कि क्या इसकी कोई loadXMLविधि सुरक्षित है:
typeof x.loadXML === "undefined"; // Returns false
दूसरी ओर:
x.loadXML === undefined; // Throws an error
अपडेट करें
typeofचेक का एक और लाभ जिसका मैं उल्लेख करना भूल गया था कि यह अघोषित चर के साथ भी काम करता है, जो कि foo === undefinedचेक नहीं करता है, और वास्तव में ए फेंकता है ReferenceError। मुझे याद दिलाने के लिए @LinusKleen को धन्यवाद। उदाहरण के लिए:
typeof someUndeclaredVariable; // "undefined"
someUndeclaredVariable === undefined; // throws a ReferenceError
निचला रेखा: हमेशा typeofचेक का उपयोग करें।