सिर्फ बौद्धिक जिज्ञासा से बाहर, क्यों जावास्क्रिप्टजावास्क्रिप्ट: z = z || [] VAR का उपयोग नहीं करते समय एक त्रुटि फेंकता है - क्यों?
var z = z || [];
z प्रारंभ करने में (के रूप में जेड शुरू में परिभाषित कर सकते हैं)
लेकिन वर के बिना, यह एक त्रुटि फेंकता है (वैश्विक अंतरिक्ष में)
z = z || [];
को स्वीकार करता है
(यदि ज़ेड पहले अनिर्धारित है)
वैश्विक स्थान में आपको VAR का उपयोग करने की आवश्यकता नहीं है हालांकि मुझे यह मिल सकता है ई बुरा अभ्यास।
इससे पहले कि आप कहते हैं कि इस तरह
What is the purpose of the var keyword and when to use it (or omit it)?
नोट घोषणा कि सवाल का डुप्लिकेट है "आप वैश्विक क्षेत्र में हैं, तो फिर वहाँ कोई अंतर नहीं है।"
स्पष्ट रूप से यह मेरे कामकाजी उदाहरण के मुताबिक 100% सच नहीं है।
यह एक मोड़ है या वैध तर्क है?
के रूप में मैं यह सीखा है जवाब का एक सारांश जोड़ने:
टिम (नीचे देखें) मेरी गलतफहमी की कुंजी के लिए धन्यवाद साकार नहीं कर रहा था इस (जावास्क्रिप्ट के मौलिक)
var z; अगर z पहले से मौजूद है
कि कैसे इस अभिव्यक्ति यह दोनों तरीके हैं लगता है, यदि आप गलत मानते हैं कि "var Z" हमेशा initializes बिल्कुल कुछ नहीं करता है।
बाएं से शुरू, "var Z" बस यकीन है कि जेड परिभाषित किया गया है लेकिन अगर यह पहले से मौजूद है वास्तव में किसी भी मौजूदा मूल्य को प्रभावित नहीं करता बनाता है। फिर सही पर, अगर z पहले से मौजूद है, यह प्रयोग किया जाता है, अगर नहीं, चर सिर्फ घोषित किया गया था (लेकिन खाली) तो यह उपयोग नहीं किया जाएगा लेकिन एक त्रुटि फेंक नहीं होंगे।
यह देखते हुए और जावास्क्रिप्ट में इस मुद्दे को उत्थापन के इस प्रकार पर एक उत्कृष्ट लेख है: http://www.adequatelygood.com/2010/2/JavaScript-Scoping-and-Hoisting
बहुत धन्यवाद minitech और करने के लिए हर किसी की भी जो योगदान दिया!
एक सामान्य नियम के रूप में: वास्तविक त्रुटि संदेश की प्रतिलिपि बनाना आमतौर पर "त्रुटि फेंकता" लिखने से अधिक सहायक होता है। –