-2
votes

Variable de boucle de fonction JavaScript

var i = 99;
while (true)
{
  function lines(him)
  {
    return i + " " + "lines of code in the file " + i + " " + him + i-1 + "lines of code" + "!";
  }
    

  console.log(lines("John strikes one out, clears it all out ;"));
  i -= 1;
  if (i == 0)
  {
    break;
  }
}


7 commentaires

Je pense que vous devriez mettre "lui + i-1" entre parenthèses.


+ lui + i-1 + -> + lui + (I-1) +


@Vlaz peut-être encore mieux. Je ne comprends pas ce que le code est censé faire.


isnan ("string" - 1) === true tout jusqu'à ce que - est contraint à une chaîne et concaténée.


@FlaTassembler, il est supposé imprimer la chaîne lui puis le suivez avec le numéro i-1 , par exemple, pour i = 9 il doit imprimer < Code> 8 . Mais puisqu'il n'y a pas de parenthèses nulle part, l'expression totale est évaluée sous forme de lignes de code i + "" + "dans le fichier" + i + "" + lui + i (qui produit une chaîne) -> moins 1 (qui produit nan : c'est un numéro soustrait à partir d'une chaîne) -> concaténate "lignes de code" + "!"


Est-ce que ma fonction est couru une fois ou 99 fois


@Jackie 99 fois. Il s'agit simplement de toujours produire le même message.


3 Réponses :


-2
votes

D'abord, je vous recommande d'utiliser la structure d'itération correcte. Comment décider lequel est le bon pour vous:

  • Si vous connaissez le nombre d'itérations que vous allez avoir, je préférerais utiliser une boucle pour .
  • Si vous avez une matrice comme entrée, vous pouvez utiliser foreach itérateur, mais je préfère pour boucle à la place.
  • Si vous devez itérer jusqu'à ce qu'une condition soit remplie, tandis que est la structure correcte pour cela.
  • et enfin, si vous devez faire une chose, puis itérer, alors faire la structure est ce dont vous avez besoin.

    Dans ce cas, vous savez déjà combien d'itérations vous allez avoir, alors j'irais avec une boucle pour la boucle: xxx

    aussi Gardez à l'esprit que dans votre exemple, vous passez la ligne de déclaration de fonction 99 fois, vous devez éviter cela déclarant la fonction en dehors de la structure de boucle.

    Une dernière chose, vous devriez toujours essayer de garder votre code comme Lisible que possible, dans votre code actuel, est si difficile de lire ce que vous essayez d'accomplir.


0 commentaires

0
votes

var i = 99;
function lines(him)
{
   return i + " lines of code in the file " + i + " " + him + --i + " lines of code!";
   
}

while (true)
{
   console.log(lines("John strikes one out, clears it all out; "));
   if (!i)
   {
         break;
   }
}


0 commentaires

2
votes

Le problème est que vous construisez une chaîne, mais essayez ensuite de soustraire un de la chaîne. Soustraction (contrairement à l'ajout) doit aboutir à un nombre mais "string" -1 code> n'est pas un numéro (NAN).

Un moyen de corriger votre structure consiste à mettre i-1 Code> entre parenthèses, il est donc évalué séparément comme ceci: p> xxx pré>

mais une syntaxe plus agréable consiste à utiliser des backtscks pour le formater de manière plus lisible. Essayez ceci: p>

let i = 99
let x = "hello"
console.log("i-1", i - 1)         // Works since i is a number
console.log("x-1", x - 1)         // NaN subtracting from string
console.log("x+i-1", x + i - 1)   // Still NaN since "x+i" is a string
console.log("x+(i-1)", x + (i-1)) // Works since (i-1) is added to the string


0 commentaires