Heim > Web-Frontend > js-Tutorial > Hauptteil

Detaillierte Erläuterung des JavaScript-Funktions-Curryings

PHP中文网
Freigeben: 2017-04-01 15:08:01
Original
2120 Leute haben es durchsucht

Was ist Currying?

Currying ist ein Konvertierungsprozess, der eine Funktion , die mehrere Parameter akzeptiert, in eine Funktion umwandelt, die einen einzelnen akzeptiert Parameter (Anmerkung: der erste Parameter der ursprünglichen Funktion) Gibt eine neue Funktion zurück, die die verbleibenden Parameter akzeptiert und das Ergebnis zurückgibt.

Ke Lihua-Funktionsidee: eine js-Vorverarbeitungsidee; das Prinzip, die Funktionsausführung zu verwenden, um einen Bereich zu bilden, der nicht zerstört wird Speichern Sie den gesamten Inhalt, der vorverarbeitet werden muss, in diesem Bereich, der nicht zerstört wird, und geben Sie eine kleine Funktion zurück. Von nun an können wir in der kleinen Funktion relevante Vorgänge für die zuvor gespeicherten ausführen Werte;

Die Currying-Funktion spielt hauptsächlich die Rolle der Vorverarbeitung

Die Rolle der Bindungsmethode: Pass Dies wird in der Callback-Methode als Kontext vorverarbeitet.

Bind-Methoden-Implementierungsprinzip 1 Der Code lautet wie folgt:

/**
* bind方法实现原理1
* @param callback [Function] 回调函数
* @param context [Object] 上下文
* @returns {Function} 改变this指向的函数
*/
function bind(callback,context) {
var outerArg = Array.prototype.slice.call(arguments,2);
// 表示取当前作用域中传的参数中除了fn,context以外后面的参数;
return function (){
var innerArg = Array.prototype.slice.call(arguments,0);//表示取当前作用域中所有的arguments参数;
callback.apply(context,outerArg.concat(innerArg));
}
}
Nach dem Login kopieren

Der folgende Codeabschnitt imitiert das Prinzip der verbindlichen Implementierung in der Prototypenkette

/**
* 模仿在原型链上的bind实现原理(柯理化函数思想)
* @param context [Object] 上下文
* @returns {Function} 改变this指向的函数
*/
Function.prototype.mybind = function mybind (context) {
var _this = this;
var outArg = Array.prototype.slice.call(arguments,1);
// 兼容情况下
if('bind' in Function.prototype) {
return this.bind.apply(this,[context].concat(outArg));
}
// 不兼容情况下
return function () {
var inArg = Array.prototype.slice.call(arguments,0);
inArg.length === 0?inArg[inArg.length]=window.event:null;
var arg = outArg.concat(inArg);
_this.apply(context,arg);
}
}
Nach dem Login kopieren

Funktion Currying (Currying)

In der Informatik ist Currying eine Technik, die eine Funktion, die mehrere Parameter akzeptiert, in eine Funktion umwandelt, die einen einzelnen Parameter akzeptiert (den ersten Parameter der ursprünglichen Funktion), und eine neue Funktion zurückgibt, die die verbleibenden Parameter akzeptiert und ein Ergebnis zurückgibt

Currying bedeutet, bestimmte Parameter im Voraus zu übergeben, um eine einfache Funktion zu erhalten. Die zuvor übergebenen Parameter werden jedoch im Abschluss gespeichert, sodass einige Besonderheiten auftreten. Zum Beispiel:

Beispiel:

var adder = function(num) {
return function(y) {
return num + y;
}
}
var inc = adder(1);
var dec = adder(-1);
//inc, dec现在是两个新的函数,作用是将传入的参数值(+/-)1
alert(inc(99));//100
alert(dec(101));//100
alert(adder(100)(2));//102
alert(adder(2)(100));//102
Nach dem Login kopieren

Das Obige ist die detaillierte Erklärung des JavaScript-Funktions-Currying. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn). )!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage