Nach dem Konzept Closures es die Variablen der äußeren lexikalischer Umgebung für zukünftige Ausführung seines inneren function.For, Beispiel speichern -Unterschied zwischen Schließungen und IIFE des in Javascript
function makeYounger(age){
function b(){
console.log("Original age is :"+age);
}
b();
return(function(){
return age/2; }
);
}
var displayAge = makeYounger(20);
console.log(displayAge());
Im obigen Szenario, Altersvariable wird von JavaScript-Engine beibehalten, um die innere Funktion, die in der Rückgabe-Methode vorhanden ist, auszuführen.
Hier kommt die IIFE,
(function(window){
var greeting = "Hello";
var fNameSpace1 ={
name : "Appu",
callName : function(){
console.log(greeting + fNameSpace1.name);
}
};
window.doer = fNameSpace1;
}) (window);
fNameSpace1.callName();//To execute the inner function
Im obigen Szenario nach dem Konzept Schließungen ‚Gruß‘ Variablen und ‚fNameSpace1.name‘ werden für die zukünftige Ausführung des Rufname gespeichert werden() function.Instead Wir nutzen das "Fenster" -Objekt. Ich bin verwirrt, warum wir mit Fenster gehen, wenn wir Schließungen haben?
Das 'fNameSpace1.callName();' am Ende wird fehlschlagen. Das Globale heißt 'Doer', nicht' FNameSpace1'. –
Es ist nicht klar, was Sie fragen. Wenn die Frage lautet: "Was ist der Unterschied zwischen Schließungen und IIFEs?" Lautet die Antwort "ein IIFE ist eine spezifische Art, eine Schließung zu schaffen". Wenn die Frage lautet: "Warum gehen wir mit Fenster, wenn wir Schließungen haben?" Die Antwort lautet: Weil der Autor eine globale Variable haben wollte. –
Meine Frage ist, was ist die genaue Verwendung von Fensterobjekt in diesem Szenario, wenn die JavaScript-Engine bereits FNameSpace1-Objekt speichert. Warum erstellen wir eine Referenz mit Fenster? – CodeForHappiness