« JavaScript/Structures de contrôle » : différence entre les versions

Contenu supprimé Contenu ajouté
Ltrlg (discussion | contributions)
→‎L'alternative switch : évitons de parler de microoptimisations, surtout qu’en JS c’est extrêmement dépendant de la VM
Aucun résumé des modifications
Ligne 11 :
Les instructions if et else mettent en place une condition dans le code. Elles permettent de différencier plusieurs cas lors de l'exécution.
 
<sourcesyntaxhighlight lang="javascript">
if (condition){
...
Ligne 17 :
...
}
</syntaxhighlight>
</source>
 
Dans la condition, on se sert généralement des opérateurs de comparaison mais toute fonction renvoyant un booléen est autorisée.
 
<sourcesyntaxhighlight lang="javascript">
var age = 15;
 
Ligne 29 :
document.write("Vous ne pouvez pas entrer.");
}
</syntaxhighlight>
</source>
 
Notez que ceci est également possible (lorsque le bloc à exécuter ne nécessite qu'une seule ligne) :
 
<sourcesyntaxhighlight lang="javascript">
var age = 15;
 
if (age >= 18) document.write("Vous pouvez entrer.");
else document.write("Vous ne pouvez pas entrer.");
</syntaxhighlight>
</source>
 
On peut aussi rajouter des conditions intermédiaires entre le if et le else qui permettront de tester plus de cas. Voyez plutôt :
 
<sourcesyntaxhighlight lang="javascript">
var temps = "orageux";
var je_prends;
Ligne 53 :
document.write("Lorsque le temps est "+temps+", je prends "+je_prends);
// Lorsque le temps est orageux, je prends mon paratonnerre.
</syntaxhighlight>
</source>
 
Cet exemple montre comment gérer simplement les conditions multiples en JavaScript.
Ligne 65 :
Voyons comment cela fonctionne :
 
<sourcesyntaxhighlight lang="javascript">
var temps = "neigeux";
var temperature = -5;
Ligne 76 :
document.write("Lorsque le temps est "+temps+" et que la température est de "+temperature+"{{Abbr|°C|degré Celcius}}, je prends "+je_prends);
// Lorsque le temps est orageux et que la température est de -5{{Abbr|°C|degré Celcius}}, je prends ma luge ou mon gros blouson.
</syntaxhighlight>
</source>
 
On peut aussi séparer les ET et les OU avec des parenthèses.
Ligne 85 :
Pour cela, il y a le mot-clé switch :
 
<sourcesyntaxhighlight lang="javascript">
switch (variable)
{
Ligne 93 :
default: /*...*/ break;
}
</syntaxhighlight>
</source>
 
L'instruction <code>switch</code> permet de gérer plusieurs cas en fonction de la valeur d'une variable.
Ligne 99 :
Exemple :
 
<sourcesyntaxhighlight lang="javascript">
var temps = "soleil";
var je_prends;
Ligne 113 :
document.write("Lorsque le temps est "+temps+", je prends "+je_prends);
// Lorsque le temps est soleil, je prends mon parasol.
</syntaxhighlight>
</source>
 
Vous admettrez que la seconde méthode est préférable :-)
Ligne 122 :
Les ternaires sont en fait un concentré d'un groupe <code>if</code> et <code>else</code> (sans <code>else if</code> au milieu). Cela permet d'écrire une condition en une seule ligne. C’est une alternative aux structures conditionnelles vues précédemment. Voici la syntaxe :
 
<sourcesyntaxhighlight lang="text">
(condition) ? ...bloc du if : ...bloc du else
</syntaxhighlight>
</source>
 
Le "<code>?</code>" remplace donc l'accolade du <code>if</code> tandis que les " : " remplacent celle du <code>else</code>.
Un code avec if et else :
 
<sourcesyntaxhighlight lang="javascript">
var age = 15;
 
if (age >= 18) document.write("Vous pouvez entrer.");
else document.write("Vous ne pouvez pas entrer.");
</syntaxhighlight>
</source>
 
Un code avec structure ternaire renvoyant <u>le même résultat</u> :
 
<sourcesyntaxhighlight lang="javascript">
var age = 15;
 
document.write((age >= 18) ? "Vous pouvez entrer." : "Vous ne pouvez pas entrer.");
</syntaxhighlight>
</source>
 
Pratique non ?
Ligne 157 :
Voici la syntaxe de <code>while</code> :
 
<sourcesyntaxhighlight lang="javascript">
while (condition)
{
... (instructions, incrémentation...)
}
</syntaxhighlight>
</source>
 
Voici un exemple simple :
 
<sourcesyntaxhighlight lang="javascript">
var i = 0;
while (i < 5){
Ligne 173 :
}
document.write("Boucle terminée !");
</syntaxhighlight>
</source>
 
Cela va vous afficher ceci :
Ligne 194 :
Voici un exemple simple :
 
<sourcesyntaxhighlight lang="javascript">
var i = 5;
do
Ligne 203 :
 
document.write("Boucle terminée !");
</syntaxhighlight>
</source>
 
Ici, la condition vaut false dès le début. Un while normal aurait donc sauté la condition pour passer à la suite du code. Mais le <code>do while</code> exécute une fois le code et affiche :
Ligne 216 :
Syntaxe :
 
<sourcesyntaxhighlight lang="javascript">
for (initialisation; condition; incrémentation)
{
...
}
</syntaxhighlight>
</source>
 
Exemple :
 
<sourcesyntaxhighlight lang="javascript">
for (i = 0; i<5; i++)
{
Ligne 231 :
}
document.write("Boucle terminée !");
</syntaxhighlight>
</source>
 
Le résultat est le même que celui de la boucle <code>while</code>. Ceci dit, l’utilisation d'une des trois boucles dépend du contexte et des besoins du script.
Ligne 238 :
Il arrive parfois que l’on veuille sortir d'une boucle alors même que la condition de la boucle est encore vraie. Pour cela, on peut faire appel à l'instruction <code>break</code>. Lorsque cette instruction est exécutée, la boucle se termine immédiatement et le code la suivant est exécuté.
 
<sourcesyntaxhighlight lang="javascript">
var i = 1;
while (i <= 10)
Ligne 246 :
}
document.write("La valeur de i est "+i);
</syntaxhighlight>
</source>
 
Ce qui affiche : ''La valeur de i est 5''. En effet, le programme sort de la boucle lorsque i prend la valeur de 5, donc après 4 tours.