यह सिर्फ एक मानक दायरा स्थिति है - तथ्य यह है कि यह एक अज्ञात फ़ंक्शन अभिव्यक्ति है जो किसी अन्य फ़ंक्शन के पैरामीटर के रूप में पारित होती है इससे कोई फर्क नहीं पड़ता। ध्यान दें कि आपके performAction()
फ़ंक्शन (जो आप नहीं दिखाते हैं) के भीतर str
पर कोई पहुंच नहीं होगी जो कॉलबैक फ़ंक्शन का पैरामीटर है - यदि performAction()
संदर्भ str
यह वैश्विक "इंटरनेट" चर (या इसके स्थानीय परिभाषित अगर str
)।
स्कोप उद्देश्यों के लिए एक फ़ंक्शन के पैरामीटर, उसी फ़ंक्शन के स्थानीय चर के समान होते हैं, जिसका अर्थ है कि वे बाहरी दायरे से उसी नाम के अन्य चरों को मुखौटा करते हैं - लेकिन व्यापक नामों में परिभाषित किए जाने पर भी अलग-अलग नामों वाले चरों को एक्सेस किया जा सकता है गुंजाइश। मैं एक पैरामीटर str
कहा जाता है के साथ एक समारोह है, लेकिन मैं एक अलग str
में गुजर रहा हूँ, जब मैं इसे कहते
var str = "internet";
(function(str) {
console.log(str); // "internet"
str = "local param";
console.log(str); // "local param"
})(str);
console.log(str); // "internet"
उस मामले में:
कहाँ यह भ्रामक हो सकता है अगर आप कुछ इस तरह करते हैं। ध्यान दें कि उस फ़ंक्शन के भीतर str
बदलना केवल स्थानीय str
बदलता है, न कि वैश्विक। वे दो अलग-अलग चर हैं ...
नहीं - बस यह न भूलें कि यह वास्तव में एक ही चर नहीं है। –
बहुत बहुत धन्यवाद! –