IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Fonction d'ordre supérieur


Sujet :

JavaScript

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2017
    Messages : 166
    Points : 61
    Points
    61
    Par défaut Fonction d'ordre supérieur
    Bonjour,
    En me renseignant sur les fonctions d'ordre supérieur, je suis tombé sur ce petit code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    const createGreeting = (greeting) => (person) =>
            `$ {greeting} $ {person}`;
     
          const sayHi = createGreeting('Hi');
          console.log(sayHi('Ali')); // "Bonjour Ali"
    Je comprends pas comment la fonction "sayHi" peut prendre un argument puisqu'elle est définie sans argument.
    De plus, en la testant dans VScode elle ne semble pas fonctionner.

    Vous pouvez m'éclairer ?

  2. #2
    Expert confirmé
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 451
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 451
    Points : 4 600
    Points
    4 600
    Par défaut
    deja il y a une faute de frappe, il ne faut pas mettre d'espaces entre les $ et {}
    par exemple `${greeting} ${person}`.
    apres, c'est un peu tordu comme syntaxe :

    const createGreeting = (greeting) => (person) => `${greeting} ${person}`;

    ca definie une function createGreeting qui prend 1 argument (greeting) et qui retourne une fonction qui prend elle-meme un argument (person)
    cette function retournee se contente de concatener les 2 arguments
    ca reviens a ecrire
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function createGreeting(greeting) {
        return function(person) {
            return `${greeting} ${person}`;
        }
    }
    const sayHi = createGreeting('Hi');.
    apres, ca defini une variable qui n'est autre qu'un appel a la function createGreeting (avec Hi) en parametre pour greeting (qui pour rappel, retourne une function avec un argument)

    console.log(sayHi('Ali')); // "Bonjour Ali".
    puis ca fait appel a sayHi (qui est la function de retour de createGreeting ...) avec en parametre Ali (qui correspond a l'argument person

    j'ai un peu de mal a expliquer clairement le concept... j'espere que c'est un peu moins flou....

    ps : si on avait voulu faire encore plus tordu, les parentheses n'etaient meme pas necessaires :
    const createGreeting = greeting => person => `${greeting} ${person}`;
    La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

    Venez discuter sur le Chat de Développez !

Discussions similaires

  1. Ordre supérieur sur les multi-ensembles caml
    Par poupoules dans le forum Caml
    Réponses: 10
    Dernier message: 21/04/2016, 14h51
  2. Garch d'ordre supérieur à 1
    Par Lamyaa34 dans le forum SAS STAT
    Réponses: 0
    Dernier message: 09/09/2011, 11h02
  3. Ordre d'appel fonction Javascript
    Par jeannot1974 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 21/11/2006, 16h16
  4. Fonction arrondie supérieur
    Par Sebimpro dans le forum Access
    Réponses: 3
    Dernier message: 08/08/2006, 10h21
  5. Ordre des tris / fonction upper
    Par slylafone dans le forum Débuter
    Réponses: 7
    Dernier message: 18/01/2005, 17h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo