Maison > interface Web > js tutoriel > Savez-vous quel est le principe du curry ? Principes de currying des fonctions JavaScript et exemples d'utilisation

Savez-vous quel est le principe du curry ? Principes de currying des fonctions JavaScript et exemples d'utilisation

零下一度
Libérer: 2017-04-21 09:58:43
original
1502 Les gens l'ont consulté

Cet article présente principalement le principe et l'utilisation du currying de fonctions JavaScript, analyse le concept, le principe et la fonction du currying de fonctions et fournit des compétences d'utilisation spécifiques des fonctions de currying sous forme d'exemples. Les amis qui en ont besoin peuvent pour référence,

Les exemples de cet article décrivent les principes et l'utilisation du currying des fonctions Javascript. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants :

Le currying est un processus de conversion qui transforme une fonction qui accepte plusieurs paramètres en une fonction qui accepte un seul paramètre (Annotation : le premier paramètre de la fonction d'origine ) La fonction, si des arguments supplémentaires sont nécessaires, renvoie une nouvelle fonction qui accepte les arguments restants et renvoie le résultat.

C'est-à-dire qu'il fixe certains paramètres et renvoie une fonction qui accepte les paramètres restants, également appelée fonction de calcul partiel. Le but est de restreindre le champ d'application et de créer une fonction plus ciblée.

Par exemple, je souhaite créer une fonction pour me présenter. Chacun n'a qu'à saisir son nom, son sexe et son âge. Mais lorsque A utilise cette fonction, il doit saisir son nom et son sexe à chaque fois qu'il l'appelle. En fait, seul son âge a changé. Pour cette raison, A générera une fonction d'auto-introduction au curry pour lui-même, dans laquelle le nom et. le sexe est un paramètre fixe.

Veuillez consulter github pour le code pertinent.


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');
Copier après la connexion

Le résultat après exécution.

Bien sûr, nous pouvons également écrire une fonction curry qui lie la nouvelle portée.


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);
  };
}
Copier après la connexion

Bien que les fonctions de curry soient géniales, cela nécessite également que vous prêtiez une certaine attention à l'ordre des paramètres de la fonction que vous définissez. Le currying de fonctions vous permet et vous encourage à séparer les fonctionnalités complexes en parties plus petites et plus faciles à analyser. Ces petites unités logiques sont évidemment plus faciles à comprendre et à tester, et votre application devient alors une combinaison propre et ordonnée de petites unités. Donc, si vous pouvez utiliser les fonctions curry de manière appropriée, cela rendra votre code JS plus élégant.

Remarque : Il est recommandé de jeter un œil à Proxy dans ES6 (ES2015), qui est une autre façon de prétraiter les fonctions.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal