Lexical Scoping in javascript function, why is the code returning undefined -


इस सवाल का पहले से ही एक उत्तर है: < / P>

  • 4 उत्तर
  var variable = "उच्चे स्तर का " ; फ़ंक्शन बाहरी () {सतर्क (चर); // यह चेतावनी क्यों अनिर्धारित देता है ?? Var वेरिएबल = "बाहर, बाहरी भीतर"; फ़ंक्शन इनर () {चेतावनी (चर); }     भीतरी(); } बाहरी ();  

मैं समझता हूं कि लिक्सिकल स्कोपिंग की परिभाषा क्या है, फ़ंक्शन उसके दायरे में और उसके ऊपर सभी मानों का उपयोग कर सकता है i.e. उनके सामने परिभाषित सभी चीजें। तो पहले चेतावनी रिटर्न अनिर्धारित क्यों करता है?

यह उत्थान के कारण है, आपके द्वारा फ़ंक्शन के अंदर घोषित किए गए वेरिएबल को ऊपर की तरफ फहराया गया है यह गुंजाइश है, इसलिए आपका कोड वास्तव में इस तरह दिखता है

  var variable = "top level"; फ़ंक्शन बाहरी () {var चर; // अपरिभाषित, एक नया स्थानीय चर घोषित किया गया है, लेकिन परिभाषित नहीं चेतावनी (चर); // अलर्ट अपरिभाषित, जैसा कि वैरिएबल वैरिएबल = "बाहरी भीतर, बाहरी भीतर" है; फ़ंक्शन इनर () {चेतावनी (चर); }     भीतरी(); } बाहरी ();  

यदि आप बस बाहर चर को बदलना चाहते हैं, तो var कीवर्ड ड्रॉप करें, क्योंकि इसके बजाय एक नया स्थानीय वैरिएबल घोषित करता है

  var चर = "शीर्ष स्तर"; फ़ंक्शन बाहरी () {सतर्क (चर); चर = "बाहर, बाहरी भीतर"; // कोई "var" फ़ंक्शन इनर () {चेतावनी (चर); }     भीतरी(); } बाहरी ();  

Comments

Popular posts from this blog

sqlite3 - UPDATE a table from the SELECT of another one -

c# - Showing a SelectedItem's Property -

javascript - Render HTML after each iteration in loop -