typeofउत्तरों के ढेरों के लिए एक विकल्प ;
var varname = value;वैश्विक दायरे में एक बयान के साथ वैश्विक चर घोषित किए गए
खिड़की वस्तु के गुणों के रूप में पहुँचा जा सकता है।
जैसे, hasOwnProperty()विधि, जो
एक बूलियन को इंगित करता है कि क्या वस्तु में निर्दिष्ट संपत्ति अपनी संपत्ति के रूप में है (जैसा कि इसे विरासत में मिला है)
यह निर्धारित करने के लिए इस्तेमाल किया जा सकता है कि क्या
एक varकी "VARNAME" विश्व स्तर पर घोषित किया गया है यानी की संपत्ति है window।
// Globally established, therefore, properties of window
var foo = "whatever", // string
bar = false, // bool
baz; // undefined
// window.qux does not exist
console.log( [
window.hasOwnProperty( "foo" ), // true
window.hasOwnProperty( "bar" ), // true
window.hasOwnProperty( "baz" ), // true
window.hasOwnProperty( "qux" ) // false
] );
इसके बारे hasOwnProperty()में बहुत अच्छी बात यह है कि इसे कॉल करने में, हम एक ऐसे चर का उपयोग नहीं करते हैं जो अभी तक अघोषित हो सकता है - जो पहली जगह में आधी समस्या है।
हालांकि नहीं हमेशा सही या आदर्श समाधान है, कुछ निश्चित परिस्थितियों में, यह सिर्फ काम है!
टिप्पणियाँ
varएक चर को परिभाषित करने के लिए उपयोग करते समय उपरोक्त सत्य है , letजिसका विरोध किया गया है :
ब्लॉक स्कोप लोकल वैरिएबल घोषित करता है, वैकल्पिक रूप से इसे वैल्यू पर इनिशियलाइज़ करता है।
के विपरीत है var कीवर्ड के , जो विश्व स्तर पर या स्थानीय रूप से एक पूरे फ़ंक्शन को ब्लॉक स्कोप की परवाह किए बिना एक चर को परिभाषित करता है।
इसके letविपरीत var, कार्यक्रमों और कार्यों के शीर्ष स्तर पर, वैश्विक वस्तु पर कोई संपत्ति नहीं बनती है।
पूर्णता के लिए: const स्थिरांक, परिभाषा के अनुसार, वास्तव में परिवर्तनीय नहीं हैं (हालांकि उनकी सामग्री हो सकती है); अधिक प्रासंगिक रूप से:
वैश्विक स्थिरांक इसके विपरीत, विंडो ऑब्जेक्ट के गुण नहीं बनते हैं var चरों के । एक स्थिरांक के लिए एक इनिलाइज़र की आवश्यकता होती है; यही है, आपको इसके मूल्य को उसी कथन में निर्दिष्ट करना होगा जिसमें यह घोषित किया गया है।
एक स्थिरांक का मान पुनर्मूल्यांकन के माध्यम से नहीं बदल सकता है, और इसे फिर से घोषित नहीं किया जा सकता है।
कांस्ट ऐलान मूल्य के लिए केवल-पढ़ने के लिए संदर्भ बनाता है। इसका मतलब यह नहीं है कि यह जो मूल्य रखता है वह अपरिवर्तनीय है, बस यह कि चर पहचानकर्ता को आश्वस्त नहीं किया जा सकता है।
चूँकि letचर या constस्थिरांक कभी भी किसी भी वस्तु के गुण नहीं होते हैं जो hasOwnProperty()विधि को विरासत में मिला है , इसका उपयोग उनके अस्तित्व की जाँच के लिए नहीं किया जा सकता है।
की उपलब्धता और उपयोग के बारे में hasOwnProperty():
हर वस्तु के वंशज वस्तु विरासत में hasOwnProperty()विधि। [...] inऑपरेटर के विपरीत , यह विधि ऑब्जेक्ट की प्रोटोटाइप श्रृंखला की जांच नहीं करती है।
fooघोषित है, या तोtypeof foo === 'undefined'typeof foo === typeof undefined