एक अज्ञात फ़ंक्शन केवल एक फ़ंक्शन है जिसका नाम नहीं है; और कुछ नहीं। एक बंद करना एक ऐसा कार्य है जो आसपास के पर्यावरण की स्थिति को पकड़ता है।
एक अज्ञात फ़ंक्शन को बंद करने की आवश्यकता नहीं होती है, और एक क्लोजर केवल अज्ञात कार्यों के लिए नहीं बनाया जाता है।
इस hypothetical काउंटर उदाहरण पर विचार करें। एक भाषा फू पर विचार करें जो बंद करने का समर्थन नहीं करता है लेकिन अनाम कार्यों का समर्थन करता है। यह भाषा या तो नीचे दिए गए कोड के लिए एक त्रुटि संकलित या फेंक नहीं सकती है क्योंकि "ग्रीटिंग" को आंतरिक फ़ंक्शन के दायरे में परिभाषित नहीं किया गया है। तथ्य यह है कि यह अज्ञात है अप्रासंगिक है।
function outer() {
var greeting = "hello ";
(function(name) {
alert(greeting + name);
})("John Doe");
}
की एक वास्तविक भाषा अब करता है समर्थन बंद पर विचार करें - जावास्क्रिप्ट। उपर दिए गए उदाहरण लें, लेकिन इस बार भीतरी समारोह नामकरण देता है:
function outer() {
var greeting = "hello ";
(function inner(name) {
alert(greeting + name);
})("John Doe");
}
हालांकि आंतरिक समारोह अब और अनाम नहीं है, यह अभी भी राज्य के आसपास के वातावरण से कैप्चर करता है।
क्लोजर बहुत आवश्यक सुविधा प्रदान करते हैं, अन्यथा हम कार्य की प्रत्येक निर्भरता को तर्क के रूप में पारित करेंगे।
function outer() {
var greeting = "hello ";
(function(name, greeting) {
alert(greeting + name);
})("John Doe", greeting);
}
नहीं लेकिन यह http://stackoverflow.com/questions/220658/what-is-the-difference-between-a-closure-and-a-lambda मेरा बुरा –