In javascript, wann würden Sie dies verwenden möchten:
(function(){
//Bunch of code...
})();
darüber:
//Bunch of code...
In javascript, wann würden Sie dies verwenden möchten:
(function(){
//Bunch of code...
})();
darüber:
//Bunch of code...
Ich habe alle Antworten gelesen, Hier fehlt etwas sehr Wichtiges Ich werde KISS. Es gibt 2 Hauptgründe, warum ich selbstausführende anonyme Funktionen brauche, oder besser gesagt " Unmittelbar ausgelöster Funktionsausdruck (IIFE) ":
Der erste Punkt wurde bereits sehr gut erklärt. Für den zweiten Fall lesen Sie bitte das folgende Beispiel:
var MyClosureObject = (function (){
var MyName = 'Michael Jackson RIP';
return {
getMyName: function () { return MyName;},
setMyName: function (name) { MyName = name}
}
}());
Achtung 1: Wir ordnen keine Funktion zu MyClosureObject
, weiter das Ergebnis des Aufrufs dieser Funktion . Achten Sie auf ()
in der letzten Zeile.
Achtung 2: Was Sie zusätzlich über Funktionen in Javascript wissen müssen, ist, dass die inneren Funktionen Zugriff auf die Parameter und Variablen der Funktionen, in denen sie definiert sind.
Lassen Sie uns einige Experimente durchführen:
Ich kann die MyName
mit getMyName
und es funktioniert:
console.log(MyClosureObject.getMyName());
// Michael Jackson RIP
Der folgende naive Ansatz würde nicht funktionieren:
console.log(MyClosureObject.MyName);
// undefined
Ich kann aber einen anderen Namen eingeben und erhalte das erwartete Ergebnis:
MyClosureObject.setMyName('George Michael RIP');
console.log(MyClosureObject.getMyName());
// George Michael RIP
Editar: Im obigen Beispiel MyClosureObject
ist für die Verwendung ohne die new
Präfix, daher sollte es vereinbarungsgemäß nicht groß geschrieben werden.
Gibt es einen Parameter und das "Bündel Code" gibt eine Funktion zurück?
var a = function(x) { return function() { document.write(x); } }(something);
Verschluss. Der Wert von something
wird von der Funktion verwendet, die der a
. something
könnte einen variablen Wert haben (for-Schleife), und jedes Mal, wenn a eine neue Funktion hat.
Hier ist ein gutes Beispiel dafür, wie eine selbstaufrufende anonyme Funktion nützlich sein kann.
for( var i = 0; i < 10; i++ ) {
setTimeout(function(){
console.log(i)
})
}
Ausgabe: 10, 10, 10, 10, 10...
for( var i = 0; i < 10; i++ ) {
(function(num){
setTimeout(function(){
console.log(num)
})
})(i)
}
Ausgabe: 0, 1, 2, 3, 4...
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.