2012-06-03 8 views
83

के अंदर एक वैश्विक चर के मान को कैसे बदलूं I ​​जावास्क्रिप्ट का उपयोग कर रहा हूं और मैं एक वैश्विक चर बना देता हूं। मैं इसे एक फ़ंक्शन के बाहर परिभाषित करता हूं और मैं वैश्विक चर वैल्यू को फ़ंक्शन के अंदर से बदलना चाहता हूं और इसे किसी अन्य फ़ंक्शन से उपयोग करना चाहता हूं, मैं यह कैसे कर सकता हूं?मैं फ़ंक्शन

उत्तर

104

बस समारोह के अंदर चर संदर्भ; कोई जादू नहीं, बस इसका नाम इस्तेमाल करें। यदि यह वैश्विक रूप से बनाया गया है, तो आप वैश्विक चर अद्यतन कर रहे होंगे।

आप var का उपयोग करके इसे स्थानीय रूप से घोषित करके इस व्यवहार को ओवरराइड कर सकते हैं, लेकिन यदि आप var का उपयोग नहीं करते हैं, तो फ़ंक्शन में उपयोग किए जाने वाले एक चर नाम का वैश्विक स्तर होगा यदि वह चर वैश्विक रूप से घोषित किया गया है।

यही कारण है कि इसे हमेशा var के साथ अपने चर घोषित करने का सर्वोत्तम अभ्यास माना जाता है। क्योंकि अगर आप इसे भूल जाते हैं, तो आप दुर्घटना से ग्लोबल्स के साथ गड़बड़ करना शुरू कर सकते हैं। इसे बनाना एक आसान गलती है। लेकिन आपके मामले में, यह चारों ओर मुड़ता है और आपके प्रश्न का आसान जवाब बन जाता है।

+1

यह मेरे लिए काम नहीं करता: देश = 'foo' $ .ajax ({ यूआरएल: '/ कुछ-endpoint', सफलता: समारोह (डेटा) { देश = data.country; } }); console.log (देश) // outputs 'foo' –

+28

@MarkSimpson - कारण यह काम नहीं करता है क्योंकि आपके उदाहरण में, 'console.log' तुरंत चलाया जाता है, लेकिन AJAX सफलता फ़ंक्शन केवल कुछ बिंदु पर चलता है बाद में जब AJAX कॉल वास्तव में एक प्रतिक्रिया देता है। यह AJAX की असीमित प्रकृति के बारे में एक मौलिक बिंदु है: क्लोजर फ़ंक्शंस में कोड अनुक्रम में इसके चारों ओर कोड के साथ नहीं चलता है। इवेंट-संचालित कोड के बारे में सीखते समय समझना महत्वपूर्ण है। – Spudley

+0

स्पष्टीकरण के लिए धन्यवाद, @Spudley –

39
var a = 10; 

myFunction(); 

function myFunction(){ 
    a = 20; 
} 

alert("Value of 'a' outside the function " + a); //outputs 20 
+0

इस अद्भुत सरल उदाहरण के लिए धन्यवाद। इसका तर्क मेरा सिर कर रहा था। बस 4 डी सोचने के लिए उपयोग किया जाना चाहिए। – Mikey3Strings

18

बस उस चर के नाम का उपयोग करें।

जावास्क्रिप्ट में, चर केवल फ़ंक्शन के लिए स्थानीय होते हैं, यदि वे फ़ंक्शन के पैरामीटर हैं या यदि आप उन्हें चर के नाम से पहले var कीवर्ड टाइप करके स्थानीय रूप से घोषित करते हैं।

स्थानीय मान का नाम वैश्विक मूल्य के रूप में एक ही नाम है, तो window वस्तु का उपयोग

देखें इस jsfiddle

x = 1; 
y = 2; 
function a(y) { 
    // y is local to the function, because it is a function parameter 
    alert(y); // 10 
    y = 3; // will only overwrite local y, not 'global' y 
    var x; // makes x a local variable 
    x = 4; // only overwrites local x 
    alert(y); // 3 
    alert(x); // 4 
    // global value could be accessed by referencing through window object 
    alert(window.y) // 2 global y 
} 
a(10); 
alert(x); // 1; this is the global value 
alert(y); // 2; global as well 
+1

+1 वैश्विक और स्थानीय रूप से घोषित चर के बीच टकराव का नाम देने और इसे कैसे पहुंचाया जा सकता है। – gdbj

5
<script> 
var x = 2; //X is global and value is 2. 

function myFunction() 
{ 
x = 7; //x is local variable and value is 7. 

} 

myFunction(); 

alert(x); //x is gobal variable and the value is 7 
</script> 
+0

बस फ़ंक्शन के अंदर 'var' कीवर्ड का उपयोग न करें, तो आपको 'document.getElementById (" बाहर ") से निपटने की आवश्यकता नहीं है। Value = x;' –

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