Guide JavaScript 1.5:Instructions conditionnelles
Un article de MDC.
[modifier] Instructions conditionnelles
Une instruction conditionnelle est un ensemble de commandes qui sont exécutiées si une condition spécifique est remplie. JavaScript propose deux instructions conditionnelles : if...else et switch.
[modifier] L'instruction if...else
Utilisez if pour exécuter une instruction si une condition logique est vraie. La clause optionnelle else sert à exécuter une autre instruction si la condition est fausse. Une instruction if ressemble à ceci :
if (condition) instruction_1 [else instruction_2]
condition peut être n'importe quelle expression pouvant être évaluée comme true ou false (vrai ou faux). Si condition est évaluée à true, instruction_1 sera exécutée ; dans le cas contraire, c'est instruction_2 qui sera exécutée. instruction_1 et instruction_2 peuvent être n'importe quelle instruction, y compris d'autres instructions if imbriquées.
Il est également possible d'intégrer les instructions avec else if pour tester plusieurs conditions séquentiellement, comme ceci :
if (condition_1) instruction_1 [else if (condition_2) instruction_2] ... [else if (condition_n-1) instruction_n-1] [else instruction_n]
Pour exécuter plusieurs instructions à la suite, utilisez un bloc ({ ... }) pour les regrouper. En général, l'utilisation systématique de blocs est une bonne pratique, en particulier lorsque le code utilise plusieurs instructions if imbriquées :
if (condition) {
instructions_1
} else {
instructions_2
}
Il est conseillé de ne pas utiliser d'assignations simples dans une expression conditionnelle, parce que l'assignation peut être facilement confondue avec un test d'égalité lors d'un parcours rapide du code. Par exemple, il vaut mieux ne pas utilise le code suivant :
if (x = y) {
/* faire quelque chose */
}
Si vous désirez réellement faire une assignation dans une expression conditionnelle, il est courant d'ajouter des parenthèses supplémentaires autour de l'assignation. Par exemple :
if ((x = y)) {
/* faire quelque chose */
}
Ne confondez pas les valeurs booléennes primitives true et false avec les valeurs vraies et fausses de l'objet Boolean. Toute valeur qui n'est pas undefined, null, 0, NaN, ou la chaîne vide (""), et tout objet, y compris un objet Boolean dont la valeur est false, est évalué à true lorsqu'il est évalué dans une instruction conditionnelle. Par exemple :
var b = new Boolean(false); if (b) // cette condition est évaluée à true
Exemple
Dans l'exemple qui suit, la fonction checkData renvoie true si le nombre de caractères dans un objet Text est de trois ; dans le cas contraire, elle affiche une alerte et renvoie false.
function checkData() {
if (document.form1.threeChar.value.length == 3) {
return true;
} else {
alert("Entrez exactement trois caractères. " +
document.form1.threeChar.value + " n'est pas valide.");
return false;
}
}
[modifier] L'instruction switch
Une instruction switch permet à un programme d'évaluer une expression et d'essayer faire correspondre sa valeur à un des labels de cas prédéfinis. Si une correspondance est trouvée, le programme exécute l'instruction associée. Une instruction switch ressemble à ceci :
switch (expression) {
case label_1:
instructions_1
[break;]
case label_2:
instructions_2
[break;]
...
default:
instructions_par_défaut
[break;]
}
Le programme cherche d'abord parmi les propositions case si l'une d'elles a un label correspondant à la valeur de l'expression, et transfère alors le contrôle à cette clause en exécutant les instructions associées. Si aucun label correspondant n'est trouvé, le programme cherche la clause optionnelle default, et le cas échéant, transfère le contrôle à cette clause en éxécutant les instructions associées. Si aucune clause default n'est trouvée, le programme se poursuit à l'instruction qui suit la fin du bloc switch. Par convention, la clause default est toujours la dernière, mais ce n'est pas obligatoire.
L'instruction optionnelle break associée avec chaque proposition case permet de s'assurer que le programme sortira du bloc switch une fois que l'instruction correspondante a été exécutée et poursuive son exécution à l'instruction qui suit la fin du bloc switch. Si break n'est pas indiqué, le programme continue à l'instruction suivante au sein du bloc switch.
Example
Dans l'exemple suivant, si typefruit est évalué à "Bananes", le programme associe cette valeur avec le cas "Bananes" et exécute l'instruction associée. Lorsque l'instruction break est rencontrée, le programme sort du bloc switch et exécute l'instruction qui suit. Si break n'était pas indiqué, l'instruction pour le cas "Cerises" aurait également été exécutée.
switch (typefruit) {
case "Oranges":
document.write("Les oranges sont à 0,59 € le kilo.<br>");
break;
case "Pommes":
document.write("Les pommes sont à 0,32 € le kilo.<br>");
break;
case "Bananes":
document.write("Les bananes sont à 0,48 € le kilo.<br>");
break;
case "Cerises":
document.write("Les cerises sont à 3 € le kilo.<br>");
break;
case "Mangues":
case "Papayes":
document.write("Les mangues et les papayes sont à 2,79 € le kilo.<br>");
break;
default:
document.write("Désolés, nous n'avons plus de " + fruittype + ".<br>");
}
document.write("Désirez-vous autre chose ?<br>");