var foo = '1',
bar = '2';
console.log(foo, bar, window.foo); //1, 2, undefined
(function(foo){
console.log(foo, bar); //2, 2
})(bar);
मैं ऊपर कोड के बारे में दो तुच्छ प्रश्न हैं:समारोह स्कोप और वैश्विक चर
क्यों
window.foo
अपरिभाषित है? डिफ़ॉल्ट रूप से विंडो ऑब्जेक्ट से जुड़े सभी वैश्विक चर नहीं हैं?foo ===
2 बंद होने के अंदर क्यों है? मुझे पता है कि मैं मूलbar
को उपनामfoo
के साथ पास कर रहा हूं, जो2
है, लेकिन फ़ंक्शन स्कोप के बाहरfoo
अभी भी1
है। और जहां तक मुझे पता है, मूलfoo
को बंद करने के अंदर से भी पहुंचा जा सकता है। आईआईएफई के तर्क के रूप में पारित होने के बाद से "नया फू" प्राथमिकता दी गई है?
प्रश्न 1 - देखें कि पहेली कैसे चलती है - 'ऑनलोड'। प्रश्न 2 - आप सही हैं। 'Foo' पैरामीटर बाहरी दायरे के 'foo'" को ओवरराइट करता है लेकिन ** केवल ** IIFE के अंदर। मुझे लगता है कि इसे छाया कहा जाता है। तो अब आप बाह्य 'foo' का संदर्भ नहीं दे पाएंगे जबतक कि आप पैरामीटर नाम नहीं बदलते ... या यदि 'foo' वास्तव में' विंडो' – Ian