Opérateurs booléens ECMAScript
- Page précédente Opérateurs de bits
- Page suivante Opérateurs de multiplication
Les opérateurs booléens sont très importants, ils permettent au langage de programmation de fonctionner normalement.
Il y a trois types d'opérateurs booléens : NOT, AND et OR.
Opération ToBoolean
Avant d'étudier divers opérateurs logiques, faisons connaissance de l'opération ToBoolean décrite dans la norme ECMAScript-262 v5.
L'opération abstraite ToBoolean convertit ses paramètres en valeurs logiques selon les règles du tableau suivant :
Type de paramètre | Résultat |
---|---|
Non-défini | false |
Null | false |
Boolean | Le résultat est égal au paramètre d'entrée (sans conversion) |
Nombre | Si le paramètre est +0, -0 ou NaN, le résultat est false ; sinon, il est true. |
Chaîne | Si le paramètre est une chaîne de caractères vide, le résultat est false ; sinon, il est true. |
Objet | true |
Opérateur logique NOT
Dans ECMAScript, l'opérateur NOT logique est le même que dans C et Java, et est représenté par l'exclamation point (!).
Contrairement aux opérateurs OR et AND logiques,L'opérateur NOT logique renvoie toujours une valeur Boolean.
Le comportement de l'opérateur NOT logique est le suivant :
- Si l'opérande est un objet, renvoie false
- Si l'opérande est le nombre 0, renvoie true
- Si l'opérande est tout autre nombre que 0, renvoie false
- Si l'opérande est null, renvoie true
- Si l'opérande est NaN, renvoie true
- Si l'opérande est undefined, une erreur se produit
Généralement, cet opérateur est utilisé pour contrôler les boucles :
var bFound = false; var i = 0; while (!bFound) { if (aValue[i] == vSearchValues) { bFound = true; } else { i++; } }
Dans cet exemple, la variable Boolean (bFound) est utilisée pour enregistrer si la recherche a réussi. Lorsque l'élément de données du problème est trouvé, bFound est mis à true, !bFound est égal à false, ce qui signifie que l'exécution sortira de la boucle while.
Lors de la vérification de la valeur Boolean d'une variable ECMAScript, l'opérateur NOT logique peut également être utilisé. Pour ce faire, il est nécessaire d'utiliser deux opérateurs NOT en une seule ligne de code. Quelle que soit la nature de l'opérande, le premier opérateur NOT renvoie une valeur Boolean. Le second NOT inverse cette valeur Boolean, ce qui donne la véritable valeur Boolean de la variable.
var bFalse = false; var sRed = "red"; var iZero = 0; var iThreeFourFive = 345; var oObject = new Object; document.write("La valeur logique de bFalse est " + (!!bFalse)); document.write("La valeur logique de sRed est " + (!!sRed)); document.write("La valeur logique de iZero est " + (!!iZero)); document.write("La valeur logique de iThreeFourFive est " + (!!iThreeFourFive)); document.write("La valeur logique de oObject est " + (!!oObject));
Résultat :
La valeur logique de bFalse est false La valeur logique de sRed est true La valeur logique de iZero est false La valeur logique de iThreeFourFive est true La valeur logique de oObject est true
L'opérateur logique AND
En ECMAScript, l'opérateur logique AND est représenté par les deux et signes (&&) :
Par exemple :
var bTrue = true; var bFalse = false; var bResult = bTrue && bFalse;
Le tableau de vérité suivant décrit le comportement de l'opérateur logique AND :
Opérande 1 | Opérande 2 | Résultat |
---|---|---|
true | true | true |
true | false | false |
false | true | false |
false | false | false |
Les opérateurs de l'opérateur logique AND peuvent être de tout type, pas seulement des valeurs Boolean.
Si un opérateur n'est pas une valeur Boolean primitive, l'opérateur logique AND n'est pas nécessairement retourné :
- Si l'un des opérateurs est un objet et l'autre une valeur Boolean, il retourne l'objet.
- Si les deux opérateurs sont des objets, il retourne le second objet.
- Si l'un des opérateurs est null, il retourne null.
- Si l'un des opérateurs est NaN, il retourne NaN.
- Si une des valeurs opérantes est undefined, une erreur se produit.
Comme l'opérateur logique AND en Java, l'opérateur logique AND en ECMAScript est une opérateur d'arithmetic, c'est-à-dire que si le premier opérateur détermine le résultat, le second opérateur n'est pas calculé. Pour l'opérateur logique AND, si le premier opérateur est false, le résultat ne peut pas être true, peu importe la valeur du second opérateur.
Considérez l'exemple suivant :
var bTrue = true; var bResult = (bTrue && bUnknown); // Erreur alert(bResult); // Cette ligne ne sera pas exécutée
Ce segment de code lève une erreur lors de l'opérateur logique AND, car la variable bUnknown est undefined. La valeur de la variable bTrue est true, car l'opérateur logique AND continue de calculer la variable bUnknown. Cela entraîne une erreur car la valeur de bUnknown est undefined et ne peut pas être utilisée dans l'opérateur logique AND.
Si vous modifiez cet exemple et mettez le premier nombre à false, il ne se produira pas d'erreur :
var bFalse = false; var bResult = (bFalse && bUnknown); alert(bResult); // Affiche "false"
Dans ce segment de code, le script affiche la valeur retournée par l'opérateur logique AND, c'est-à-dire la chaîne de caractères "false". Même si la valeur de la variable bUnknown est undefined, elle ne sera pas calculée, car la valeur du premier opérateur est false.
Astuce :Lors de l'utilisation de l'opérateur logique AND, il faut se souvenir de cette caractéristique de calcul simplifié.
Opérateur logique OR
L'opérateur logique OR dans ECMAScript est le même que dans Java, et est représenté par deux barres verticales (||) :
var bTrue = true; var bFalse = false; var bResult = bTrue || bFalse;
Le tableau de vérité suivant décrit le comportement de l'opérateur logique OR :
Opérande 1 | Opérande 2 | Résultat |
---|---|---|
true | true | true |
true | false | true |
false | true | true |
false | false | false |
Comme pour l'opérateur logique AND, si une des valeurs opérantes n'est pas une valeur Boolean, l'opérateur logique OR n'est pas nécessairement retourné comme une valeur Boolean :
- Si une des valeurs opérantes est un objet et que toutes les valeurs opérantes à gauche de cet objet sont false, retourner cet objet.
- Si les deux valeurs opérantes sont des objets, retourner le premier objet.
- Si la dernière valeur opérante est null et que toutes les autres valeurs opérantes sont false, alors le résultat est null.
- Si la dernière valeur opérante est NaN et que toutes les autres valeurs opérantes sont false, alors le résultat est NaN.
- Si une des valeurs opérantes est undefined, une erreur se produit.
Comme pour l'opérateur logique AND, l'opérateur logique OR est également une opération simplifiée. Pour l'opérateur logique OR, si la première valeur opérante est true, la deuxième valeur opérante n'est plus calculée.
Par exemple :
var bTrue = true; var bResult = (bTrue || bUnknown); alert(bResult); //Sortie "true"
Comme dans les exemples précédents, la variable bUnknown n'est pas définie. Cependant, en raison de la valeur true de la variable bTrue, bUnknown n'est pas calculée, donc le résultat est "true".
Si vous changez bTrue en false, une erreur se produira :
var bFalse = false; var bResult = (bFalse || bUnknown); //Erreur alert(bResult); //Ne pas exécuter cette ligne
- Page précédente Opérateurs de bits
- Page suivante Opérateurs de multiplication