Die Art, wie das IIFE-Muster funktioniert, besteht darin, dass Sie lokale Variablen für die Dinge verwenden, die Sie privat halten wollen. Lokale Variablen sind nur innerhalb der Funktion sichtbar, in der sie definiert wurden. Sie können nicht von irgendwo anders im Programm gelesen oder geschrieben werden.
Wenn Sie Dinge in dem IIFE außerhalb des IIFE einen Weg zu belichten ist über den Rückgabewert der unmittelbar aufgerufen Funktion zu tun:
var stuff = (function(){
// These variables and functions are not
// visible from the outside:
var myvar1 = "Hello";
var myvar2 = "World";
var func1(){
return myvar1 + " " + myvar2;
}
// But we can return a record that contains a
// reference to our private functions, making them
// visible outside this block.
return {
thefunc: func1
}
}());
//Now we can call the "thefunc" function we exported
console.log(stuff.thefunc());
ich sicher gemacht keine Variablennamen zu wiederholen, um Verwirrung vermeiden.
In Ihrem ersten Beispiel gibt es wenig Sinn, das IIFE-Muster zu verwenden, da es keine lokalen Variablen gibt, die Sie privat machen. Sie hätten einfach die app
Funktion außerhalb des IIFE definieren können und es hätte genauso funktioniert.
function greet(name){
name = name || 'enter your name'
console.log('Hello ' + name);
}
var t = greet();
Nicht nur ist es ein bisschen komisch, sofort eine benannte Funktion aufrufen, aber in Ihrem speziellen Beispiel die ":
Der zweite Fall könnte, indem die Funktion in einer separaten Zeile wurden deutlicher geschrieben Standard-Argument Wert "Muster schlägt vor, dass diese Funktion entworfen wurde, um mehrmals aufgerufen werden, manchmal übergeben das" Name "Argument und manchmal nicht übergeben (in diesem Fall ist standardmäßig die Zeichenfolge" geben Sie Ihren Namen "ein.
Was meinen Sie Eigenschaften und Methoden von IIFE? IIFE ist eine Funktion, die sofort aufgerufen wird, über die Eigenschaften und Methoden sprechen Sie. – Vishwanath
Ein IEFE hat keine Eigenschaften und Methoden. Wenn überhaupt, hat es einen Rückgabewert, wie "app" in Ihrem ersten Snippet. – Bergi