3
votes

Javascript fonction multiple dans une grande fonction?

Je développe cette application simple qui suppose d'exécuter une fonction à la fois. Ce code est écrit en javascript à l'aide de nodejs.

Mon objectif est de faire en sorte que la première fonction affiche la sortie en premier, puis seule la fonction deux affichera la sortie mais ces deux fonctions doivent être exécutées avec une seule grande fonction.

Voici mes codes. p>

function combine(Human,Alien)
{
  function one (Human)
  {
    TotalOne = Human + 5;
    console.log(`The Number Of Human : ${TotalOne}`);
    return TotalOne;
  }
  function two (Alien)
  {
    TotalTwo = Alien + 10;
    console.log(`The Number Of Alien : ${TotalTwo}`);
    return TotalTwo;
  }
}
combine(1,3);

La sortie ne semble pas lire la fonction à l'intérieur de la grande fonction. Des idées pour résoudre ce problème?

Merci :)


0 commentaires

4 Réponses :


4
votes

Vous avez oublié d'appeler les fonctions internes. Essayez ceci:

function combine(Human,Alien)
{
  function one (Human)
  {
    TotalOne = Human + 5;
    console.log(`The Number Of Human : ${TotalOne}`);
    return TotalOne;
  }
  function two (Alien)
  {
    TotalTwo = Alien + 10;
    console.log(`The Number Of Alien : ${TotalTwo}`);
    return TotalTwo;
  }
    one(Human);
    two(Alien);
}
combine(1,3);


3 commentaires

Juste pour ajouter: comment puis-je retarder le processus? comme la sortie de la fonction un sera affichée en premier et peut-être après quelques minutes la sortie de la fonction deux sera affichée. existe-t-il un moyen de rendre la sortie dans le grand délai de fonction tout en exécutant la grande fonction?


Enveloppez l'appel aux deux (Alien) dans un SetTimeout, comme ceci setTimeout (() => two (Alien), 1000) . Pour en savoir plus: w3schools.com/jsref/met_win_settimeout.asp


Ou en fait, encore plus simple: setTimeout (deux, 1000, Alien);



2
votes

Vous n'appelez pas la fonction un et deux dans la fonction de combinaison

    function combine(Human,Alien)
    {
      function one (Human)
      {
        TotalOne = Human + 5;
        console.log(`The Number Of Human : ${TotalOne}`);
        return TotalOne;
      }
      function two (Alien)
      {
        TotalTwo = Alien + 10;
        console.log(`The Number Of Alien : ${TotalTwo}`);
        return TotalTwo;
      }
      one(Human); //you missed the function invocation of one function
      two(Alien); //you missed the function invocation  of two function
    }
    combine(1,3)


0 commentaires

2
votes

Vous avez une grande fonction et deux fonctions à l'intérieur. Ce sont des déclarations de fonction . La dernière ligne correspond à la fonction appel . Cet appel exécute une grande fonction, qui dans son corps déclare les deux fonctions internes. Mais vous avez oublié d ' appeler ces fonctions dans le corps des grandes fonctions.


0 commentaires

2
votes

Si vous ne voulez pas alourdir votre fonction 'combine', veuillez prendre l'implémentation des fonctions 'one' et 'two' en dehors de son corps. Cela rendra le programme plus modulaire et facile à comprendre.

function one (Human){
    TotalOne = Human + 5;
    console.log(`The Number Of Human : ${TotalOne}`);
    //return TotalOne; you do not need the return statement as your are    printing the output on the console already.
}

function two (Alien){
    TotalTwo = Alien + 10;
    console.log(`The Number Of Alien : ${TotalTwo}`);
    //return TotalTwo;you do not need the return statement as your are    printing the output on the console already.
}

function combine(Human,Alien) {
    one(Human);
    two(Alien);
}
combine(1,3);


0 commentaires