जावास्क्रिप्ट undefined
में पुन: असाइन किया जा सकता है, इसलिए अक्सर यह एक स्वयं निष्पादन कार्य बनाने की सलाह दी जाती है जो अनिर्धारित आश्वासन देता है वास्तव में अनिर्धारित है। एक वैकल्पिक null
और undefined
निश्चित रूप से ==
हैं, लेकिन क्या कोई अन्य मान null/undefined
के बराबर समतुल्य है?जावास्क्रिप्ट अपरिभाषित शून्य के साथ प्रतिस्थापित
(function(undefined){
window.f = function(obj){
if(obj===undefined || obj===null){
alert('value is undefined or null');
}
}
})();
साथ:
TLDR
मूल रूप से आप सुरक्षित रूप से इस जगह ले सकता है
window.f = function(obj){
if(obj==null){
alert('value is undefined or null');
}
}
यदि उपरोक्त 100% सुरक्षित है, क्यों जावास्क्रिप्ट समुदाय/पुस्तकालयों ड्रॉप नहीं है undefined
पूरी तरह से और कम से कम x == null
सशर्त का उपयोग null
/undefined
दोनों को एक बार में जांचने के लिए करें?
संपादित करें:
मैं कभी नहीं देखा है किसी को वास्तव में साथ बनाम null
'अनिर्धारित' एक "अज्ञात मूल्य" का प्रतिनिधित्व? मैंने कभी इस परिदृश्य को नहीं देखा है, और इसलिए मैंने मूल रूप से सवाल पूछा। यह सिर्फ दो अविश्वसनीय रूप से भ्रमित मूल्य प्रतीत होता है जिनका उपयोग कभी भी उनके मूल उद्देश्य में नहीं किया जाता है। तुलना करने के लिए सब कुछ मानकीकृत obj==null
आकार के लिए फायदेमंद होगा और पुन: असाइनमेंट के साथ किसी भी मुद्दे से बचें। सब कुछ
var obj={};
obj.nonExistantProperty==null // true
var x;
ix==null // true
function(obj){
obj==null // true
}
इस नियम के लिए एक अपवाद है जब एक पूर्णांक के लिए undefined
/null
कास्टिंग प्रतीत होता है काम करने के लिए जारी रहेगा। यह एक सुंदर उम्र का मामला परिदृश्य है, लेकिन निश्चित रूप से ध्यान दिया जाना चाहिए।
+undefined == +undefined // false
+null == +null // true
एक ढीला समानता ==
ड्रॉप के रूप में null
का उपयोग करना:
+(null)==0
जबकि isNaN(+undefined)
को ध्यान में रखते NaN खुद के बराबर नहीं जावास्क्रिप्ट में केवल मूल्य है, तो आप कुछ बहुत पागल चीजों की तरह कर सकते हैं undefined
के बदले में सुरक्षित है, बशर्ते आप मूल्य को पूर्णांक में डालने की योजना न बनाएं। जो एक सुंदर किनारे के मामले परिदृश्य है।
आप 'शून्य 0' का उपयोग करते हुए ऊपर दिए गए कोड में आसानी से 'शून्य' का उपयोग कर सकते हैं। मैं यह भी तर्क दे सकता हूं कि 'शून्य' पढ़ने के लिए थोड़ा आसान है और फिर 'शून्य 0' टाइप करें। मेरा मुद्दा यह है कि दोनों के बीच अंतर करने में कोई मूल्य नहीं है। हालांकि अपरिभाषित एक "अज्ञात मूल्य" का प्रतिनिधित्व करना है, लेकिन वास्तव में इस सम्मेलन में कोई भी नहीं है। तो यह हर जगह मौजूद 'अपरिभाषित' को अनदेखा करने के लिए फायदेमंद दिखाई देगा और बस इसके स्थान पर 'obj == null' का उपयोग करें। – William
@ लाइम, कृपया मेरे संपादन देखें। –
धन्यवाद, मुझे पता नहीं था कि पूर्णांक में डाले जाने पर मूल्य क्या थे। 'NaN' बनाम' 0' होने के कारण निश्चित रूप से अलग है। ऐसा लगता है '[शून्य]। जॉइन (' ')' और '[अपरिभाषित]। जॉइन ('')' हालांकि समकक्ष हैं। – William