2011-12-16 13 views

उत्तर

4

आप कोड भ्रामक है और ऐसी शैली में है जो लोगों को निष्पादन आदेश के मामले में सोचता है। मानक जावास्क्रिप्ट इंजन इन दिनों इसे ले जाएगा और इसे चलाने से पहले सुधार होगा:

var a = 1, 
b = function() { 
    var a = function() {}; 
    a = 10; 
    return; 
}; 
b(); 
alert(a); 

अब आप समझ सकते हैं कि वास्तव में क्या हो रहा है। फ़ंक्शन "बी" के अंदर फिर से "ए" घोषित किया गया है, इसलिए वास्तव में वास्तव में दो "ए" चर हैं। एक "window.a" है और दूसरा "बी var a" है लेकिन नहीं "बीए" क्योंकि यह बंद या कार्य के बाहर पहुंच योग्य नहीं है।

दूसरे शब्दों में, आप जो भी कोड प्राप्त करते हैं उसे प्राप्त करते हैं।

कृपया अपना कोड पठनीय बनाएं और बिंदु को भ्रमित न करें।

+0

धन्यवाद, मैं इस सुधारित कोड के साथ समझ सकता हूं। –

+0

तो मुझे लगता है कि इसका मुख्य बिंदु आपको अपना कोड लिखना चाहिए जैसे कि इसे पहले से पहले पार्स किया गया हो। इससे अधिक पठनीयता होगी। डगलस क्रॉकफोर्ड से सीखने वाला एक है। –

+0

@ emeraldcode.com मैं व्यक्तिगत रूप से सहमत हूं, लेकिन ऐसे लोग हैं जो कोड तोड़ना पसंद करते हैं ताकि आप शीर्ष पर फ़ंक्शन के "सार" को देख और पढ़ सकें, सभी उप-भागों बाद में आ रहे हैं। वह शैली जावास्क्रिप्ट (I * think *) को सुविधाजनक बनाने की कोशिश कर रही है। व्यक्तिगत रूप से मैंने दिन में पास्कल में कोड करना सीखा, और आपको चीजों को बिल्कुल विपरीत तरीके से करना था :-) – Pointy

6

आप अपनी अंतिम पंक्ति के साथ फ़ंक्शन में "ए" प्रतीक घोषित करते हैं। असाइनमेंट स्टेटमेंट से प्रभावित "ए" है।

फ़ंक्शन घोषणा विवरणों को फ़ंक्शन के शीर्ष पर रखा गया है और पहले व्याख्या की गई है। इस प्रकार, के बाद असाइनमेंट कथन प्रभावी रूप से होता है, आपने "ए" नामक एक फ़ंक्शन ("बी" फ़ंक्शन के लिए स्थानीय) घोषित किया है। इसलिए असाइनमेंट को प्रतीक को प्रभावित करता है, न कि वैश्विक "ए"।

याद रखें कि चर टाइप नहीं किए गए हैं, इसलिए तथ्य यह है कि आपने किसी फ़ंक्शन में नाम बाध्य किया है, इसे बाद में एक संख्यात्मक मान असाइन करने से नहीं रोकता है।

+0

वाह। यह जावास्क्रिप्ट की सुंदर लचीलापन का एक शानदार उदाहरण है और यदि आप इसे लिखने के बारे में सावधान नहीं हैं तो यह आपको परेशानी में डाल सकता है। –

+1

हां! जावास्क्रिप्ट का स्पष्ट रूप से स्पष्ट यह है कि यह जटिल बनाता है :-) – Pointy

+0

क्षमा करें, प्वाइंट, आपने मेरे जैसा ही जवाब दिया है। मैंने आपका जवाब नहीं देखा लेकिन मैं स्पष्टता के लिए अपना रखूंगा। श्रीमान को +1 –

संबंधित मुद्दे