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; } }
3 Réponses :
D'abord, je vous recommande d'utiliser la structure d'itération correcte. Comment décider lequel est le bon pour vous:
foreach code> itérateur, mais je préfère pour code> boucle à la place. LI>
- Si vous devez itérer jusqu'à ce qu'une condition soit remplie,
tandis que code> est la structure correcte pour cela. LI>
- et enfin, si vous devez faire une chose, puis itérer, alors
faire code> la structure est ce dont vous avez besoin. LI>
ul> Dans ce cas, vous savez déjà combien d'itérations vous allez avoir, alors j'irais avec une boucle pour la boucle: p> xxx pré> 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. P>
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. p> p>
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; } }
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 Un moyen de corriger votre structure consiste à mettre mais une syntaxe plus agréable consiste à utiliser des backtscks pour le formater de manière plus lisible. Essayez ceci: p> "string" -1 code> n'est pas un numéro (NAN).
i-1 Code> entre parenthèses, il est donc évalué séparément comme 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
Je pense que vous devriez mettre "lui + i-1" entre parenthèses.
+ lui + i-1 + code> ->
+ lui + (I-1) + code>
@Vlaz peut-être encore mieux. Je ne comprends pas ce que le code est censé faire.
isnan ("string" - 1) === true code> tout jusqu'à ce que
- code> est contraint à une chaîne et concaténée.
@FlaTassembler, il est supposé imprimer la chaîne
lui code> puis le suivez avec le numéro
i-1 code>, par exemple, pour
i = 9 code> il doit imprimer < Code> 8 code>. Mais puisqu'il n'y a pas de parenthèses nulle part, l'expression totale i> est évaluée sous forme de lignes de code
i + "" + "dans le fichier" + i + "" + lui + i code > (qui produit une chaîne) -> moins
1 code> (qui produit
nan code>: c'est un numéro soustrait à partir d'une chaîne) -> concaténate
"lignes de code" + "!" 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.