Zunächst einmal genau hinsehen, um die Nutzung dieser Konstruktion:
mod(3)(9);
Sie können es in zwei Schritte aufgeteilt:
var fn = mod(3);
fn(9);
Von hier aus ist es offensichtlich, dass mod(3)
allein muß eine Rückkehr neue Funktion, so dass es später erneut aufgerufen werden konnte. Diese neue Funktion muss den Wert beibehalten, der beim ersten Aufruf übergeben wurde. Dies ist der Schlüssel Teil: Sie diesen Wert im Verschluß gespeichert werden sollte (auch automatisch aufgrund der Natur der Verschlüsse gespeichert ist):
function mod(x) {
return function(y) {
return y % x;
};
}
hier gute Illustration des Begriffs „closure“ kommt. Wenn jemand Sie fragt (zum Beispiel im Interview), können Sie sagen: closure ist die Funktion mit dem Bereich, in dem sie ursprünglich erstellt wurde. In der obigen Funktion hat die neue innere Funktion also immer internen Zugriff auf den äußeren Funktionsparameter x
.
Return eine Funktion zurückgibt. Sehen Sie sich Tutorials zu Funktionen höherer Ordnung an und currying. Ich denke du meinst 'mod (3) (9)' – elclanrs
'mod ((3) (9))' --- ist kein syntaktisch gültiger JS. So ist es nicht möglich, eine Funktion zu schreiben, so dass ein solcher Aufruf zurückgegeben 0 – zerkms
scheint wie eine ziemlich dumme Interview Frage –