Référence de JavaScript 1.5 Core:Opérateurs:Opérateurs de comparaison
Un article de MDC.
Sommaire |
[modifier] Résumé
| Opérateurs | |
| Implémenté dans : | JavaScript 1.0
JavaScript 1.3 : ajout des opérateurs JavaScript 1.4 : l'utilisation de |
| Version d'ECMAScript : | ECMA-262 comprend tous les opérateurs de comparaison à l'exception de === et !==.
Les opérateurs |
Les opérandes peuvent être des valeurs numériques ou des chaînes. Les chaînes sont comparées selon l'ordre lexicographique standard, à l'aide des valeurs Unicode.
Une valeur booléenne est renvoyée comme résultat de la comparaison.
- Deux chaînes sont égales lorsqu'elles ont la même séquence de caractères, la même longueur et les mêmes caractères aux mêmes positions.
- Deux nombres sont égaux lorsqu'ils sont numériquement égaux (ont la même valeur numérique).
NaNn'est égal à rien, pas mêmeNaN. Les zéros positifs et négatifs sont égaux entre-eux. - Deux objets sont égaux s'ils se réfèrent au même
Object. - Deux opérandes booléens sont égaux s'ils sont tous deux
trueou tous deuxfalse. - Les types
NulletUndefinedsont égaux==(mais pas strictement égaux===).
Le tableau suivant décrit les opérateurs de comparaison :
| Opérateur | Description | Exemples renvoyant true1 |
|---|---|---|
Égalité (==) |
Renvoie true si les opérandes sont égaux. Si les deux opérandes ne sont pas du même type, JavaScript essaie de les convertir en un type approprié pour la comparaison. |
|
Inégalité (!=) |
Renvoie true si les opérandes ne sont pas égaux. Si les deux opérandes ne sont pas du même type, JavaScript essaie de les convertir en un type approprié pour la comparaison. |
|
Égalité stricte (===) |
Renvoie true si les opérandes sont égaux et du même type. |
|
Inégalité stricte (!==) |
Renvoie true si les opérandes ne sont pas égaux et/ou d'un type différent. |
|
Plus grand que (>) |
Renvoie true si l'opérande de gauche est plus grand que l'opérande de droite. |
|
Plus grand ou égal (>=) |
Renvoie true si l'opérande de gauche est plus grand ou égal à l'opérande de droite. |
|
Plus petit (<) |
Renvoie true si l'opérande de gauche est plus petit que l'opérande de droite. |
|
Plus petit ou égal (<=) |
Renvoie true si l'opérande de gauche est plus petit ou égal à l'opérande de droite. |
|
1 Ces exemples supposent que l'on a assigné la valeur 3 à var1 et la valeur 4 à var2.
[modifier] Utilisation des opérateurs d'égalité
Les opérateurs d'égalité standard (== et !=) permettent de comparer des opérandes sans tenir compte de leur type. Les opérateurs d'égalité stricte (=== et !==) permettent de comparer des opérandes de même type. Utilisez les opérateurs d'égalité stricte si les opérandes doivent être d'un type particulier en plus d'avoir une valeur particulière, ou si le type exact des opérandes est important. Dans les autres cas, utilisez les opérateurs d'égalité standard, qui permettent de comparer des opérandes même s'ils ne sont pas du même type.
Lorsqu'une conversion de type est nécessaire, JavaScript convertit les objets String, Number, Boolean ou Object de la manière suivante :
- Lorsqu'un nombre est comparé à une chaîne, la chaîne est convertie en une valeur numérique. JavaScript tente de convertir la valeur numérique littérale de la chaîne en une valeur de type
Number. Une valeur mathématique est d'abord dérivée de la chaîne littérale, puis elle est arrondie à la valeur de typeNumberla plus proche. - Si un des opérandes est de type
Boolean, il est converti en 1 s'il vauttrue, et +0 s'il vautfalse. - Si un objet est comparé avec un nombre ou une chaîne, JavaScript essaie de renvoyer la valeur par défaut de l'objet. Les opérateurs tentent de convertir l'objet en une valeur primitive, une valeur
StringouNumber, en utilisant les méthodesvalueOfettoStringdes objets. Si cette tentative de conversion échoue, une erreur d'exécution est générée.
Il n'est pas possible d'utiliser l'opérateur d'égalité standard (==) pour comparer des instances de JSObject. Pour ce faire, utilisez la méthode JSObject.equals.
[modifier] Compatibilité avec les versions antérieures
Le comportement des opérateurs d'égalité standard (== et !=) dépend de la version de JavaScript.
[modifier] JavaScript 1.3 et précédentes
L'opérateur d'égalité standard (==) ou JSObject.equals peuvent tous deux être utilisés pour comparer des instances de JSObject.
[modifier] JavaScript 1.2
Les opérateurs d'égalité standard (== et !=) n'effectuent pas de conversion de type avant de faire la comparaison. Les opérateurs d'égalité stricte (=== et !==) ne sont pas disponibles.
[modifier] JavaScript 1.1 et précédentes
Les opérateurs d'égalité standard (== et !=) effectuent une conversion de type avant de faire la comparaison. Les opérateurs d'égalité stricte (=== et !==) ne sont pas disponibles.