1 Les tests et branchements
Les instructions de test
Les mots clés in,true , false, null, undefined, typeof et instanceof sont destiné à être utilisé dans des expressions afin de permettre la comparaison d'opérande avec les constantes qu'il définissent ou les valeur qu'ils renvoient.
in permet de tester si une propriété ou un indice existe dans un objet javascript
Sa syntaxe est : propriété in objet
Exemple :
var monObjet = ['test', 'de' , 'mote clé','in'];
monObjet ; // renvoi (4) ["test", "de", "mote clé", "in"]
"test" in monObjet ; // renvoi false
monObjet.test; // renvoi undefined
"length" in monObjet ; // renvoi true
monObjet.length ; //renvoi 4
Attention à ne pas confondre les propriété avec les valeur d'un tableau ou d'une propriété.
In teste l'existence de propriété dans les objets, pas leur valeur (length existe et vaut 4 pas "length")
Les mots clés true, false, undefined et null permettent la comparaison avec les notions qu'ils défininssent.
true et false sont respectivement les bolléens vrai et faux. ils peuvent aussi être utilisé pour l'affectation de ces valeurs à une variable ou une propriétée.
Exemple :
var variable = true
var variable2 = false
variable1 == ! variable2 ; // renvoi true
variable1 === true ; // renvoi true
variable1 == 1; // renvoi true
variable1 == 0; // renvoi false
variable1 === 1; // renvoi false
variable2 == 0 ; // renvoi true
variable2 === 0 ; //renvoi false
Les six dernières lignes mérite une explication :
true et false peuvent aussi être exprimé par différents de zéro et égal à zéro, donc l'opérateur == renvoie vrai dans les cas correspondant. Mais une valeur numérique n'est pas un bolléen donc l'opérateur === renvoie faux quelque soit la valeur numérique !
Maintenant que l'on sait créer des expression booléenne on peut passer en revu les instruction de test preproment dite.
Il existe deux façon de faire de s branchements conditionnels selon que l'in veut exprimer un alternative, ou un choix multiple.
L'alternative, c'est à dire une expression de la forme " si .... alors ... sinon ..." est codé avec les instructions if et else.
Le format est le suivant :
if(expr)
instruction
else
instruction
;
ou expr est une expression et instruction est soit une seul instruction (terminée par un point virgule) soit une suite d'instruction entre accolade ( c'est à dire un bloc d'instruction). Si expre vaut true ou n'importe quelle valeur differente de zéro alors alors c'est l'instruction placée entre le if et le esle qui est exécutées, sinon c'est celle placée aprés le else.
Voici un exemple qui affiche 'vrai' si la condition vaut true (ou non nulle) et faux sinon
if(mavar)
alert('vrai');
else
alert('faux')
;
A noter que pour une simple affectation il y a une écriture abrégé de la forme :
resultat = condition ? siVrai : SiFaux;
C'est équivalent à :
if(condition)
resultat = siVrai;
else
resultat = siFaux;
Pour les choix multiple, plutôt que d'empiler les if else if else ... une instruction à été prévue.
Il s'agit de l'instruction switch .
Sa syntaxe est la suivante :
switch(expression) {
case résultat1:
liste instruction 1;
break;
case résultat2:
liste instruction 2;
break;
default:
liste instruction 3;
break;
}
Le principe est le suivant, l'expression de l'instruction switch est calculée puis son résultat est comparé à la valeur de chaque instruction case. Si l'un d'eux correspond alors la liste d'instructions placé en dessous du case est exécuté jusqu'a l'instruction break.
Si aucune valeur contennue dans un instruction case ne correspond et qu'il y a une instruction default alors la liste d'instructions placé après est exécutée.
Cette instruction a des particularité à connaître.
Voici un exemple qui affiche des message en forme de compte à rebours en partant la valeur contenu dans maval (3 maximum):
switch(maval) {
case 3:
alert('3');
case 2:
alert('2');
case 1:
alert('1');
default:
alert('0');
}
Vous noterez qu'en l'absence de break, les instruction case suivant celle qui contient la valeur de maval sont "ignorés" .
Autre exemple, quand plusieurs résultats ont le même traitement, par exemple :
switch(maval) {
case 1:
case 3:
case 5:
alert(maval+' est impair');
break;
case 2:
case 4:
case 6:
alert(maval+' est pair');
break;
default:
alert('merci d\'indiquer un chiffre entre un et six inclus');
break;
}