Heim  >  Artikel  >  Web-Frontend  >  Wissen Sie, was das Curry-Prinzip ist? JavaScript-Funktionscurry-Prinzipien und Anwendungsbeispiele

Wissen Sie, was das Curry-Prinzip ist? JavaScript-Funktionscurry-Prinzipien und Anwendungsbeispiele

零下一度
零下一度Original
2017-04-21 09:58:431427Durchsuche

Dieser Artikel stellt hauptsächlich das Prinzip und die Verwendung des JavaScript-Funktions-Curryings vor, analysiert das Konzept, das Prinzip und die Funktion des Funktions-Curryings und stellt spezifische Verwendungsfähigkeiten von Currying-Funktionen in Form von Beispielen bereit. Als Referenz:

Die Beispiele in diesem Artikel beschreiben die Prinzipien und die Verwendung des Javascript-Funktions-Curryings. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:

Currying ist ein Konvertierungsprozess, der eine Funktion, die mehrere Parameter akzeptiert, in eine Funktion umwandelt, die einen einzelnen Parameter akzeptiert (Anmerkung: der erste Parameter der ursprünglichen Funktion ) Wenn zusätzliche Argumente erforderlich sind, gibt die Funktion eine neue Funktion zurück, die die verbleibenden Argumente akzeptiert und das Ergebnis zurückgibt.

Das heißt, es korrigiert einige Parameter und gibt eine Funktion zurück, die die verbleibenden Parameter akzeptiert, auch Teilberechnungsfunktion genannt. Der Zweck besteht darin, den Anwendungsbereich einzugrenzen und eine gezieltere Funktion zu erstellen.

Zum Beispiel möchte ich eine Funktion erstellen, um mich vorzustellen. Jeder muss nur seinen Namen, sein Geschlecht und sein Alter eingeben. Aber wenn A diese Funktion verwendet, muss er bei jedem Aufruf seinen Namen und sein Geschlecht eingeben. Tatsächlich hat sich nur sein Alter geändert. Aus diesem Grund generiert A eine Curry-Selbsteinführungsfunktion, in der der Name und Geschlecht sind feste Parameter.

Bitte überprüfen Sie Github auf den entsprechenden Code.


function curry(fn){
  var args = Array.prototype.slice.call(arguments, 1);
  return function(){
    var innerArgs = Array.prototype.slice.call(arguments);
    var finalArgs = args.concat(innerArgs);
    return fn.apply(null, finalArgs);
  };
}
function selfIntroduction(name, gender, age){
  console.log('hi, I am ' + name + ', ' + age +' years old ' + '. I am a ' + gender + '.');
}
var curriedSelfIntroduction = curry(selfIntroduction, 'A', 'man');
curriedSelfIntroduction('12');
curriedSelfIntroduction('13');
curriedSelfIntroduction('14');

Das Ergebnis nach der Ausführung.

Natürlich können wir auch eine Curry-Funktion schreiben, die den neuen Geltungsbereich bindet.


function curry(fn, context){
  var args = Array.prototype.slice.call(arguments, 2);
  return function(){
    var innerArgs = Array.prototype.slice.call(arguments);
    var finalArgs = args.concat(innerArgs);
    return fn.apply(context, finalArgs);
  };
}

Obwohl das Currying von Funktionen großartig ist, erfordert es auch, dass Sie der Reihenfolge der Parameter der von Ihnen definierten Funktion etwas Aufmerksamkeit schenken. Das Funktions-Currying ermöglicht und ermutigt Sie, komplexe Funktionen in kleinere und einfacher zu analysierende Teile zu unterteilen. Diese kleinen logischen Einheiten sind offensichtlich einfacher zu verstehen und zu testen, und dann wird Ihre Anwendung zu einer sauberen und ordentlichen Kombination kleiner Einheiten. Wenn Sie also Curry-Funktionen richtig verwenden können, wird Ihr JS-Code eleganter.

Hinweis: Es wird empfohlen, einen Blick auf Proxy in ES6 (ES2015) zu werfen, was eine weitere Möglichkeit zur Vorverarbeitung von Funktionen darstellt.

Das obige ist der detaillierte Inhalt vonWissen Sie, was das Curry-Prinzip ist? JavaScript-Funktionscurry-Prinzipien und Anwendungsbeispiele. 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