Heim  >  Artikel  >  Web-Frontend  >  Detaillierte Erläuterung des JavaScript-Funktions-Curryings

Detaillierte Erläuterung des JavaScript-Funktions-Curryings

PHP中文网
PHP中文网Original
2017-04-01 15:08:012102Durchsuche

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));
}
}

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);
}
}

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

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

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