संभव डुप्लिकेट:
Difference between using var and not using var in JavaScriptजावास्क्रिप्ट में "var" क्या करता है? कभी-कभी असाइनमेंट का हिस्सा क्यों होता है?
var foo = 1;
foo = 1;
दो लाइनों के ऊपर के बीच क्या अंतर है?
संभव डुप्लिकेट:
Difference between using var and not using var in JavaScriptजावास्क्रिप्ट में "var" क्या करता है? कभी-कभी असाइनमेंट का हिस्सा क्यों होता है?
var foo = 1;
foo = 1;
दो लाइनों के ऊपर के बीच क्या अंतर है?
असल में, var
एक चर दिखाता है और आप इसे एक ही समय में असाइन कर सकते हैं।
var
के बिना, यह चर को असाइन कर रहा है। असाइन करना या तो मौजूदा चर को असाइन करेगा या उस नाम का वैश्विक चर बना देगा और फिर इसे असाइन करेगा।
कार्यों के बाहर, इसका मतलब है कि कोई वास्तविक अंतर नहीं है (प्रिंसिपल में) यदि चर पहले से मौजूद नहीं है। दोनों उस मामले में वैश्विक चर foo
बनाते हैं।
एक समारोह में, एक बड़ा अंतर है। पहला यह कार्य करने के लिए एक परिवर्तनीय स्थानीय बनाता है चाहे वह कहीं और मौजूद है या नहीं।
दूसरा वैश्विक चर बना देगा यदि यह अस्तित्व में नहीं है, या यदि यह मौजूद है तो बस मूल्य को बदलें।
कोड को मॉड्यूलर जितना संभव हो सके रखने के लिए, आपको हमेशाvar
का उपयोग करना चाहिए जब तक कि आप विशेष रूप से मौजूदा वैश्विक चर को बदलना नहीं चाहते हैं। इसका अर्थ है var
के साथ कार्यों के बाहर सभी ग्लोबल्स घोषित करना और सभी स्थानीय लोगों को var
के साथ घोषित करना।
एक समारोह के बाहर भी एक अंतर है। आप यह obj.prop कर सकते हैं, आप var obj.prop नहीं कर सकते! –
@ चिंतन, इस तथ्य के साथ और अधिक संभावना है कि 'obj.prop' वास्तव में एक नया चर नहीं हो सकता है, बल्कि यह मौजूदा' obj' चर की एक संपत्ति है। – paxdiablo
पहले मामले में foo उसी स्कोप में उपलब्ध होगा जहां इसे परिभाषित किया गया है, यानी यह स्थानीय चर होगा। दूसरे मामले में foo वैश्विक स्तर पर स्थित वैश्विक चर है।
foo = 1
foo
को अंतिम दायरे में रखा जाएगा जहां foo
परिभाषित किया गया था, या वैश्विक दायरा। var foo = 1
वैरिएबल को मौजूदा दायरे में रखेगा (यानी वर्तमान फ़ंक्शन)।
आप किस जावास्क्रिप्ट ट्यूटोरियल/पुस्तक का उपयोग कर रहे हैं? (यह एक मौलिक है ... विषय।) –