


Javascript est votre fonction d'ordre supérieur (application avancée)_compétences Javascript
Dans les langages de programmation habituels, les paramètres d'une fonction ne peuvent être que des types de base ou des références d'objet, et la valeur de retour ne peut être que des types de données de base ou des références d'objet. Mais en Javascript, les fonctions sont des citoyens de première classe et peuvent être transmises en tant que paramètres ou renvoyées en tant que valeurs de retour. La fonction dite d'ordre supérieur est une fonction qui peut prendre une fonction comme paramètre ou une fonction comme valeur de retour. Ces deux situations ont de nombreux scénarios d'application dans le développement réel. Cet article est un résumé de plusieurs scénarios d'application que j'ai rencontrés au cours de mon travail et de mes études.
Fonction de rappel
La réutilisation du code est l'un des critères importants pour mesurer une application. En extrayant la logique métier modifiée et en l'encapsulant dans la fonction de rappel, le taux de réutilisation du code peut être efficacement amélioré. Par exemple, la méthode forEach ajoutée aux tableaux dans ES5 parcourt le tableau et appelle la même fonction sur chaque élément.
array = {}; array.forEach = function(arr, fn){ for (var i = 0, len = arr.length; i < len; i++) { fn(arr[i], i, arr); } }
Concentrez l'activité sur la fonction de rappel sans avoir à réécrire le code de traversée à chaque fois.
Fonction partielle
En tant qu'application typique de sortie d'une fonction comme valeur de retour, il s'agit d'une fonction partielle. La fonction dite partielle fait référence à l'utilisation de la création d'une fonction qui appelle une autre partie, une fonction dont les paramètres ou les variables ont été prédéfinis. Quoi qu’il en soit, en regardant la définition, je ne comprends pas à quoi sert ce truc. Examinons d'abord des exemples. L'exemple le plus typique de fonctions partielles est le jugement de type.
Les objets Javascript ont trois attributs : les attributs de prototype, les attributs de classe et l'extensibilité. (Les étudiants qui ne savent pas devraient retourner lire le livre Rhino, page : 138) L'attribut class est une chaîne, qui n'est pas directement fournie en Javascript, mais nous pouvons utiliser Object.prototype.toString pour l'obtenir indirectement. Cette fonction renvoie toujours la forme suivante :
[Classe d'objet]
Nous pouvons donc écrire une série de fonctions isType.
Le code est le suivant :
isString = function(obj){ return Object.prototype.toString.call(obj) === "[object String]"; } isNumber = function(obj){ return Object.prototype.toString.call(obj) === "[object Number]"; } isArray = function(obj){ return Object.prototype.toString.call(obj) === "[object Array]"; }
La plupart des codes de ces fonctions sont répétés à l'heure actuelle, les fonctions d'ordre élevé font un début magnifique :
isType = function(type) { return function(obj) { return Object.prototype.toString.call(obj) === "[object " + type + "]"; } } isString = isType('String'); isNumber = isType('Number'); isArray = isType('Array');
Ainsi, la forme de renvoi d'une nouvelle fonction personnalisée en spécifiant certains paramètres est une fonction partielle.
Curry
Le currying est aussi appelé évaluation partielle. Une fonction de currying acceptera d'abord certains paramètres.Après avoir accepté ces paramètres, la fonction ne sera pas évaluée immédiatement, mais continuera à renvoyer une autre fonction. Les paramètres qui viennent d'être transmis sont enregistrés dans la fermeture formée par la fonction. Lorsque la fonction est réellement évaluée, tous les paramètres transmis seront utilisés pour l'évaluation en même temps.
var currying = function(fn) { var args = []; return function() { if (arguments.length === 0) { return fn.applay(this, args); } else { args = args.concat(arguments); return arguments.callee; } } }
Supposons que nous prenions comme exemple le calcul des dépenses quotidiennes d'un mois :
var currying = function(fn) { debugger; var args = []; return function() { if (arguments.length === 0) { return fn.apply(this, args); } else { Array.prototype.push.apply(args, arguments); return arguments.callee; } } } cost = function(){ var sum = 0; for (var i = 0, len = arguments.length; i < len; i++) { sum += arguments[i]; } return sum; } var cost = currying(cost); cost(100); cost(200); alert(cost())
Limitation des événements
Dans certains scénarios, certains événements peuvent être déclenchés à plusieurs reprises, mais la fonction de traitement des événements n'a pas besoin d'être exécutée à chaque fois. Par exemple, des calculs logiques complexes sont effectués dans l'événement window.resize. Si l'utilisateur modifie fréquemment la taille du navigateur, les calculs complexes auront un impact sérieux sur les performances. Parfois, ces calculs logiques n'ont pas besoin d'être déclenchés à chaque fois. seuls des calculs limités sont nécessaires. Pour le moment, nous devons ignorer certaines demandes d'événements en fonction de la période. Jetez un œil à la fonction de limitation suivante :
function throttle(fn, interval) { var doing = false; return function() { if (doing) { return; } doing = true; fn.apply(this, arguments); setTimeout(function() { doing = false; }, interval); } } window.onresize = throttle(function(){ console.log('execute'); }, 500);
En contrôlant le temps d'exécution des fonctions, vous pouvez atteindre un équilibre parfait entre le nombre d'exécutions de fonctions et les exigences fonctionnelles. Un autre événement est mousemove. Si nous lions cet événement à un élément DOM, l'événement sera déclenché à plusieurs reprises lorsque la souris passera sur l'élément.
L'événement est terminé
Pour certains événements qui peuvent être déclenchés fréquemment, nous souhaitons parfois effectuer une série d'opérations après la fin de l'événement. À ce stade, nous pouvons utiliser des fonctions d'ordre supérieur pour effectuer le traitement suivant :
function debounce(fn, interval) { var timer = null; function delay() { var target = this; var args = arguments; return setTimeout(function(){ fn.apply(target, args); }, interval); } return function() { if (timer) { clearTimeout(timer); } timer = delay.apply(this, arguments); } }; window.onresize = throttle(function(){ console.log('resize end'); }, 500);
Si l'événement est déclenché au cours de ce processus, effacez le dernier handle d'événement et reliez l'heure d'exécution.
Référence :
《Explication détaillée du nœud》
"Modèles de conception Javascript et pratiques de développement"

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

PHP est un langage côté serveur largement utilisé. L'une des raisons pour lesquelles de nombreux développeurs Web aiment utiliser PHP est sa riche bibliothèque de fonctions et sa syntaxe de fonctions simple et facile à utiliser. La programmation fonctionnelle est un paradigme de programmation qui encapsule bien les données et le comportement, rendant le code plus modulaire et plus facile à maintenir et à tester. Dans cet article, nous présenterons comment utiliser PHP pour la programmation fonctionnelle. Bases de la programmation fonctionnelle L'idée centrale de la programmation fonctionnelle est de traiter les fonctions comme des citoyens de première classe. Les fonctions elles-mêmes peuvent être transmises, renvoyées et composées comme des variables.

En Python, une fonction qui prend une autre fonction comme argument ou renvoie une fonction en sortie est appelée fonction d'ordre supérieur. Voyons ses fonctionnalités - la fonction peut être stockée dans une variable. Cette fonction peut être passée en paramètre à une autre fonction. Les fonctions d'ordre supérieur peuvent être stockées sous forme de listes, de tables de hachage, etc. Les fonctions peuvent être renvoyées à partir de fonctions. Regardons quelques exemples - Fonctions en tant qu'objets La traduction chinoise de l'exemple est : Exemple Dans cet exemple, ces fonctions sont traitées comme des objets. Ici, la fonction demo() est affectée à une variable - #Creatingafunctiondefdemo(mystr):returnmystr.swapcase()#swappingthecase

Les fonctions d'ordre élevé incluent map(), filter(), réduire(), la fonction lambda, partial(), etc. Introduction détaillée : 1. map() : Cette fonction intégrée accepte une fonction et un ou plusieurs objets itérables en entrée, puis renvoie un itérateur qui applique la fonction d'entrée à chaque élément de l'objet itérable 2. filter() : Cette fonction intégrée prend une fonction et un objet itérable en entrée et renvoie un itérateur qui produit les éléments qui font que la fonction d'entrée renvoie True, etc.

Fonction flèche PHP : Comment gérer les appels imbriqués de fonctions d'ordre supérieur, des exemples de code spécifiques sont nécessaires Introduction : Dans la version 7.4 de PHP, le concept de fonctions fléchées (fonctions fléchées) a été introduit. être traités avec élégance. Les appels imbriqués vers des fonctions d’ordre supérieur. Cet article présentera l'utilisation de base des fonctions fléchées et démontrera comment gérer les appels imbriqués de fonctions d'ordre supérieur à travers des exemples de code spécifiques. 1. Qu'est-ce qu'une fonction fléchée ? La fonction flèche est une nouvelle fonctionnalité introduite dans la version PHP7.4.

Introduction au monde des fonctions d'ordre supérieur en Python Si vous souhaitez améliorer vos compétences en programmation Python et générer un code plus expressif et efficace, vous êtes au bon endroit. Les fonctions en Python sont plus que de simples blocs de code spécialisés. Ce sont également des éléments puissants qui peuvent être déplacés, transférés et même générés dynamiquement. Les fonctions d'ordre supérieur améliorent cette polyvalence en traitant d'autres fonctions. Cet article abordera en détail les principes des fonctions d'ordre supérieur. Nous explorerons les bases des processus en tant qu'objets de première classe, plongerons dans des exemples concrets de fonctions d'ordre supérieur et encouragerons la puissance des fonctions lambda pour un code clair et beau. Le modèle de programmation fonctionnelle et ses avantages lorsqu'il est utilisé en Python seront également abordés. Après avoir lu cet article, vous aurez une bonne compréhension des fonctions d'ordre supérieur et saurez

Avec la popularité et le développement du langage Golang, de plus en plus de développeurs commencent à essayer d'utiliser des idées de programmation fonctionnelle. Les fonctions d'ordre supérieur dans Golang apportent une grande commodité à la programmation fonctionnelle et sont largement utilisées dans le développement réel. Alors, quels sont les scénarios d’application des fonctions d’ordre élevé dans Golang ? Ensuite, nous analyserons cela. Traitement des paramètres de fonction et des valeurs de retour Dans Golang, les fonctions peuvent être utilisées comme paramètres d'autres fonctions ou fonctions de retour. Cela signifie que nous pouvons passer une fonction en paramètre à une autre

Les fonctions d'ordre supérieur de Golang acceptent et renvoient des fonctions. Ils se répartissent en deux catégories : recevoir des fonctions en paramètres : traiter d'autres fonctions ou exécuter des programmes dynamiques. Fonctions de retour sous forme de valeurs de retour : créez et renvoyez des fonctions qui peuvent être stockées et exécutées ultérieurement.

La fonction d'ordre supérieur est une fonction fonctionnelle très utile en Python. La fonction dite d'ordre supérieur est une fonction qui peut être utilisée pour recevoir une autre fonction en tant que paramètre.
