मैं क्लोजर के बारे में कुछ पोस्ट पढ़ रहा था और हर जगह यह देखा, लेकिन यह कैसे काम करता है, इसकी कोई स्पष्ट व्याख्या नहीं है - हर बार मुझे सिर्फ यह बताया गया था कि ...:
// Create a new anonymous function, to use as a wrapper
(function(){
// The variable that would, normally, be global
var msg = "Thanks for visiting!";
// Binding a new function to a global object
window.onunload = function(){
// Which uses the 'hidden' variable
alert( msg );
};
// Close off the anonymous function and execute it
})();
ठीक है मैं देख रहा हूं कि हम नए अनाम फ़ंक्शन बनाएंगे और फिर इसे निष्पादित करेंगे। तो उसके बाद यह सरल कोड काम करना चाहिए (और यह करता है):
(function (msg){alert(msg)})('SO');
मेरा सवाल यह है कि यहां किस तरह का जादू होता है? मैंने सोचा था कि जब मैंने लिखा था:
(function (msg){alert(msg)})
तब एक नया अनाम फ़ंक्शन फ़ंक्शन "" (msg) की तरह बनाया जाएगा ...
लेकिन फिर यह काम क्यों नहीं करता है?
(function (msg){alert(msg)});
('SO');
इसे एक ही पंक्ति में होने की आवश्यकता क्यों है?
क्या आप मुझे कुछ पोस्ट बता सकते हैं या मुझे स्पष्टीकरण दे सकते हैं?
(function (msg){alert(msg)})('SO');
पूरी तरह से अपने आप काम करती है। इससे पहले आपके द्वारा पोस्ट किए गए अन्य अनाम फ़ंक्शन से इसका कोई लेना-देना नहीं है। वे दो पूरी तरह से अलग गुमनाम कार्य हैं। आपको तुरंत एक अनाम फ़ंक्शन शुरू करना होगा क्योंकि इसका कोई नाम नहीं है और बाद में संदर्भित नहीं किया जा सकता है।