Ich lese "Eloquent JavaScript". Kapitel 3 führt das Konzept "Closure" ein und gibt Ihnen ein paar Beispiele. Einer davon ist der nächste:Kann mir jemand den Ablauf dieser JavaScript-Funktion erklären? (Closure Konzept)
function multiplier(factor) {
return function(number) {
return number * factor;
};
}
var twice = multiplier(2);
console.log(twice(5));
// → 10
Ich glaube, ich habe das Konzept verstanden. Wenn ich zuerst console.log(twice)
ausführe, da die Variable number
nicht definiert ist, was ich bekomme, ist [Function]
. Was ich nicht verstehe ist, wie twice(5)
funktioniert. Warum wird die lokale Variable number
mit dem Wert 5
initialisiert?
Auch warum, wenn ich console.log(multiplier(2,5))
ausführen, bekomme ich nicht 10 als Ergebnis?
Danke.
@Sidenote: Vielen Dank! –
Es ist eine [Curry-Funktion] (http://stackoverflow.com/questions/2272902/make-this-syntax-possible-var-a-add23-5) – ftor