Heim  >  Artikel  >  Web-Frontend  >  Detaillierte Erläuterung von Beispielen für JS-Currying

Detaillierte Erläuterung von Beispielen für JS-Currying

零下一度
零下一度Original
2017-06-26 15:14:381480Durchsuche

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn