2016-05-10 8 views
0
function add (x) { 
    return function (y) { 
    return x + y; 
    }; 
    } 
var add5 = add(5); 
var no8 = add5(3); 
alert(no8); // Returns 8 

Kann mir bitte jemand erklären, was passiert whit y? Wie lautet der erste Aufruf der Funktion hinzufügen gibt 5 zurück? Ignoriert es y oder was?Wie funktioniert diese Funktion (x) hinzufügen?

+0

Erster Aufruf einer Funktion zurückgibt. Frage wurde zuvor gestellt. Hoffentlich hat jemand eine bessere Zeit, einen Betrogenen zu finden. – epascarello

+0

Die Funktion 'add' nimmt eine Zahl' x' und gibt eine * function * zurück, die ein Argument (bezeichnet mit 'y') akzeptiert und zu' x' addiert. Also gibt 'var add5 = add (5)' eine Funktion zurück, die ihrem Argument 5 hinzufügt. Dann ruft 'var no8 = add5 (3)' diese Funktion mit dem Argument 3 auf. – lurker

Antwort

1

Es heißt Closure, d. H. Sie können einen Zustand durch Verschachtelungsfunktion beibehalten.

In diesem Fall übergeben wir im ersten Schritt 5 an add(), die dann den Status speichert (Nummer, die übergeben wurde) und eine Funktion zurückgibt, die diese Nummer verwendet. Die innere Funktion kennt diese Nummer auch nach dem ersten Anruf.

Sie können hier mehr lesen.

https://developer.mozilla.org/en/docs/Web/JavaScript/Closures

Verwandte Themen