retour
01/04
section 01
Les conditions (if, else, switch)
Connectez-vous pour sauvegarder votre progression et acceder aux quiz
Se connecterLes structures conditionnelles permettent d'executer du code differemment selon qu'une condition est vraie ou fausse. C'est la base de la logique en programmation.
if / else if / else
javascriptconst score = 85;
if (score >= 90) {
console.log('Excellent !');
} else if (score >= 70) {
console.log('Bien joue !');
} else if (score >= 50) {
console.log('Correct, mais peut mieux faire.');
} else {
console.log('Insuffisant, reessayez.');
}
// Affiche : "Bien joue !"
// Condition avec operateurs logiques
const estConnecte = true;
const estAdmin = false;
if (estConnecte && estAdmin) {
console.log('Acces admin');
} else if (estConnecte) {
console.log('Acces utilisateur');
} else {
console.log('Veuillez vous connecter');
}L'operateur ternaire (rappel)
Pour les conditions simples, l'operateur ternaire est plus concis :
javascriptconst message = score >= 70 ? 'Reussi' : 'Echoue';switch
Le switch est utile quand on compare une valeur a plusieurs cas possibles :
javascriptconst jour = 'lundi';
switch (jour) {
case 'lundi':
case 'mardi':
case 'mercredi':
case 'jeudi':
case 'vendredi':
console.log('Jour de semaine');
break;
case 'samedi':
case 'dimanche':
console.log('Week-end !');
break;
default:
console.log('Jour inconnu');
}Important : N'oubliez JAMAIS le break dans un switch. Sans break, l'execution "tombe" dans les cas suivants (fall-through).
Guard clauses (retours anticipes)
Les guard clauses ameliorent la lisibilite en traitant les cas d'erreur en premier :
javascript// MAUVAIS : nesting profond
function traiterCommande(commande) {
if (commande) {
if (commande.articles.length > 0) {
if (commande.paiement) {
return 'Commande traitee';
} else {
return 'Paiement manquant';
}
} else {
return 'Panier vide';
}
} else {
return 'Commande invalide';
}
}
// BON : guard clauses (flat et lisible)
function traiterCommande(commande) {
if (!commande) return 'Commande invalide';
if (commande.articles.length === 0) return 'Panier vide';
if (!commande.paiement) return 'Paiement manquant';
return 'Commande traitee';
}Bonne pratique : Privilegiez les guard clauses aux conditions imbriquees. Traitez les cas d'erreur en premier avec des
return anticipes, puis le cas nominal a la fin.// voir aussi