1. Quelle
In der Informatik bedeutet Currying, eine Funktion, die mehrere Parameter akzeptiert, in eine Funktion umzuwandeln, die einen einzelnen Parameter akzeptiert (den ersten Parameter der ursprünglichen Funktion), und eine Technik zum Zurückgeben von a Neue Funktion, die die verbleibenden Argumente akzeptiert und ein Ergebnis zurückgibt. Diese Technik wurde von Christopher Strachey nach dem Logiker Haskell Curry benannt, obwohl sie von Moses Schönfinkel und Gottlob Frege erfunden wurde.
2. curring(1)(2)(3)(4)() Wie füge ich Parameter hinzu, um das Ergebnis auf 10 zu bringen?
1. Eigentlich müssen wir nur darüber nachdenken, wie wir jeden Parameter beibehalten und die Parameter schließlich beim Aufruf akkumulieren. Dies ist der Fokus unseres Denkens.
function keepParams(){var arg = [];return function params(){if(arguments.length === 0){return arg; } Array.prototype.push.apply(arg,arguments); //对apply方法不熟悉的可以去百度下return params; } }var curring = keepParams(); console.log(curring(1)(2)(3)(4)()); // [1, 2, 3, 4]
2. Durch den ersten Schritt können wir die Parameter ermitteln. Dann können wir als nächstes tun, was wir wollen.
Wie implementiert man die Addition?
3. Ändern Sie die Grundfunktion
function add(){var sum = 0,l = arguments.length;for(var i = 0; i < l; i++){ sum += arguments[i]; }return sum; };function keepParams(fn){var arg = [];return function params(){if(arguments.length === 0){return fn.apply(this,arg); } Array.prototype.push.apply(arg,arguments); //对apply方法不熟悉的可以去百度下return params; } }var curring = keepParams(add);//console.log(curring(1)(2)(3)(4)()); // 10console.log(curring(1)(2,3,4)()); // 10
4. Nachdem nun der dritte Schritt der Addition implementiert ist, multiplizieren und dividieren Sie. Warten Sie, bis eine Reihe von Vorgängen abgeschlossen ist. Allerdings müssen Sie auf die Verwendung von Abschlüssen achten, wenn Sie dieselbe Methode zweimal hintereinander aufrufen.
arg wird im Speicher gespeichert
console.log(curring(1)(2)(3)(4)()); // 10console.log(curring(1)(2,3,4)()); // 20
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung von Beispielen für JS-Currying. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!