क्योंकि window.foo
के साथ आप foo
window
ऑब्जेक्ट की संपत्ति स्पष्ट रूप से देख रहे हैं जो बाद के विकल्प में नहीं है। बाद के विकल्प में, यदि foo
परिभाषित नहीं किया गया है, तो आपको डेवलपर को यह जानने में सक्षम होना चाहिए कि इसे परिभाषित नहीं किया गया है और इसे दुभाषिया के बजाय स्पष्ट त्रुटि चेतावनी प्राप्त करने के बजाय इसे undefined
पर सेट किया जाना चाहिए (जैसे पहले मामले) जो नेतृत्व करेगा पर अप्रत्याशित परिणाम।
Reference Error:
एक त्रुटि का प्रतिनिधित्व करता है जब किसी गैर-मौजूद चर संदर्भित है। एक संदर्भ को अस्वीकार करने की कोशिश करते समय एक संदर्भ त्रुटि फेंक दी गई है जिसे घोषित नहीं किया गया है।
अधिक जानकारी के लिए इस लेख पर एक नज़र डालें:
लेख ऊपर से हवाला देते हुए:
एक संदर्भ unresolvable माना जाता है यदि इसके आधार मूल्य अपरिभाषित है। इसलिए डॉट से पहले मान अपरिभाषित होने पर एक संपत्ति संदर्भ अनजान है। निम्नलिखित उदाहरण एक संदर्भ त्रुटि फेंक देगा लेकिन ऐसा इसलिए नहीं है क्योंकि TypeError पहले वहां जाता है। ऐसा इसलिए है क्योंकि किसी संपत्ति का मूल मूल्य चेकऑब्जेक्टकोर्सेबल (ईसीएमए 5 9 .10 के माध्यम से 11.2.1 के माध्यम से) है जो अपरिभाषित प्रकार को ऑब्जेक्ट में कनवर्ट करने का प्रयास करते समय टाइप एरर फेंकता है।
उदाहरण:
var foo;
foo.bar; //TypeError (base value, foo, is undefined)
bar.baz; //ReferenceError (bar is unersolvable)
undefined.foo; //TypeError (base value is undefined)
संदर्भ जो न तो गुण या चर हैं परिभाषा unresolvable से कर रहे हैं और एक ReferenceError फेंक देते हैं, तो:
foo; //ReferenceError
'window.foo'' var foo' के बराबर नहीं है। –
@ टिमडाउन। क्या आप कुछ और विस्तार से बता सकते हैं? शायद एक जवाब में? – gdoron
@ टिमडाउन और @gdoron ठीक है, यह थोड़ा असत्य है - मेरा मतलब था कि window.foo वैश्विक संदर्भ में घोषित होने पर 'var foo' के बराबर है। – JKing