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 dans un appel de fonction, besoin d'aide


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Inscrit en
    Octobre 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Octobre 2009
    Messages : 14
    Points : 10
    Points
    10
    Par défaut Fonction dans un appel de fonction, besoin d'aide
    Bonjour,

    Voila mon problème: j'ai une fonction A

    Code js : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function fctA(arg1A, arg2A, arg3A){
        //fais des trucs
    }

    j'ai une fonction B

    Code js : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function fctB(arg1B, arg2B, arg3B){
         //fait des trucs
    }

    j'ai un code qui fait

    Code js : Sélectionner tout - Visualiser dans une fenêtre à part
    fctA(arg1B, arg2B, arg3B, fctB);

    J'aimerais savoir comment je peux ajouter des arguments à mon appel de la fctB lorsque j'appel fctA de la façon ci-dessus?

  2. #2
    Membre expert
    Avatar de Golgotha
    Homme Profil pro
    Full-stack Web Developer
    Inscrit en
    Août 2007
    Messages
    1 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Full-stack Web Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2007
    Messages : 1 386
    Points : 3 532
    Points
    3 532
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    La fonction A a 3 arguments ou 4 arguments ?

    function fctA(arg1A, arg2A, arg3A) / fctA(arg1B, arg2B, arg3B, fctB); ?
    Consultant et développeur full-stack spécialiste du Web
    faq jQuery - règles du forum - faqs web

  3. #3
    Membre à l'essai
    Inscrit en
    Octobre 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Octobre 2009
    Messages : 14
    Points : 10
    Points
    10
    Par défaut
    La fctA en a 3 mais en js on peut gérer les arguments supplémentaires.

    J'ai demandé autour de moi et on m'a expliquer que la fctB est le callBack de la fctA et que les arguments qu'il reçoit sont les retours de la fctA.

    Mais comment ça marche?

  4. #4
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    je crois qu'il faudrait que tu nous montre le vrais code
    car là c'est n'importe quoi.

    une fonction c'est une fonction et rien de plus
    un appel d'une fonction prend n'importe quoi en argument les arg1B, arg2B, arg3B, fctB n'ont aucun sens hors de leur contexte.
    les nom des arguments n'ont aucune espèce d'influence.
    une callback c'est un usage n'importe quelle fonction peut être utilisé comme callback. une fonction ne peut pas ËTRE une callback.
    soit ta fonction ftcB est passée en paramètre de ftcA qui l'appelle dans son code est c'est appel est une callback. soit un appel à ftcB est codé dans ftc et c'est un simple appel de fonction.
    la fctB est le callBack de la fctA
    ne signifie absolument rien.

    en clair ce que tu dis n'a aucun sens.
    ce que l'on sait c'est que tu as deux fonction qui prennent des arguments. et qu'une des deux est utilisée comme callback.
    callback de quoi ?
    quel appel ?
    dans quel contexte ?
    ... ?

    A+JYT

  5. #5
    Membre expert
    Avatar de Golgotha
    Homme Profil pro
    Full-stack Web Developer
    Inscrit en
    Août 2007
    Messages
    1 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Full-stack Web Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2007
    Messages : 1 386
    Points : 3 532
    Points
    3 532
    Billets dans le blog
    1
    Par défaut
    Si j'ai bien compris ça ressemble à de l'injection de dépendance donc voici une illustration qui te permettra peut être de mieux comprendre le concept :

    Code js : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    function CrerUneVoiture(modele, couleur, peintre){
     
        console.log("creation de la voiture " + modele);
     
        if (peintre){
            peintre(modele, couleur);
        } else{
            console.log("il n'y à aucun peintre pour peindre la voitre..");
        }
     
    }
     
     
    function picasso(modele, couleur){
         console.log("picasso decore la " + modele + " avec la couleur " + couleur);
    }
     
     
    CrerUneVoiture("ford", "rouge");
    CrerUneVoiture("ford", "rouge", picasso);

    creation de la voiture ford il n'y à aucun peintre pour peindre la voitre..
    creation de la voiture ford
    picasso decore la ford avec la couleur rouge
    http://jsfiddle.net/wjy3o7yr/

    l’intérêt c'est que le "peintre" peux changer, il suffit de faire une fonction qui prends deux arguments et de la passer à la fonction "CrerUneVoiture"

    J’espère que ça t'aidera à voir comment ça marche.
    Consultant et développeur full-stack spécialiste du Web
    faq jQuery - règles du forum - faqs web

  6. #6
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    il ne s'agit pas d'injection de dépendance
    mais de passage d'argument

    dans ton exemple l'argument peintre est une référence sur une fonction.
    ce qui s'en rapproche le plus dans les autres langages se sont les slot en C (pointeur sur une fonction)

    pour que ce code soit correct il faudrait tester la nature de peintre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function CrerUneVoiture(modele, couleur, peintre){
     
        console.log("creation de la voiture " + modele);
     
        if ("function" == typeof peintre){
            peintre(modele, couleur);
        } else{
            console.log("il n'y à aucun peintre pour peindre la voitre..");
        }
     
    }
    A+JYT

Discussions similaires

  1. Réponses: 1
    Dernier message: 25/05/2007, 14h33
  2. Appeler une fonction dans un autre cadre !
    Par rich25200 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 01/11/2005, 13h01
  3. [JS] array dans un appel de fonction
    Par dib258 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 12/10/2005, 13h36
  4. Réponses: 7
    Dernier message: 10/09/2005, 16h49
  5. [langage] Appel de fonction dans un lien
    Par drakan dans le forum Langage
    Réponses: 1
    Dernier message: 17/05/2005, 18h30

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