Partager via


Assignations et égalité JScript

Dans JScript, l'opérateur d'assignation assigne une valeur à une variable. Un opérateur d'égalité compare deux valeurs.

Assignations

À l'instar de nombreux langages de programmation, JScript utilise le signe égal (=) pour assigner des valeurs à des variables : il s'agit de l'opérateur d'assignation. L'opérande de gauche de l'opérateur = doit être une valeur Lvalue, ce qui signifie qu'il doit s'agir d'une variable, d'un élément de tableau ou d'une propriété d'objet.

L'opérande de droite de l'opérateur = doit être une valeur Rvalue. Une valeur Rvalue peut être une valeur arbitraire de n'importe quel type, y compris le résultat d'une expression. L'exemple suivant illustre une instruction d'assignation JScript.

anInteger = 3;

JScript interprète cette instruction comme :

« Assigner la valeur 3 à la variable anInteger » ;

ou

« anInteger accepte la valeur 3. »

Une assignation réussit toujours si l'annotation de type n'a pas lié la variable de l'instruction à un type de données spécifique. Sinon, le compilateur tentera de convertir la valeur Lvalue dans le type de données de la valeur Rvalue. Si la conversion ne peut jamais aboutir, le compilateur génère une erreur. Si la conversion réussit pour certaines valeurs, mais pas pour d'autres, le compilateur génère un avertissement indiquant que la conversion est susceptible d'échouer lors de l'exécution du code.

Dans cet exemple, la valeur entière stockée dans la variable i est convertie en valeur double lorsqu'elle est assignée à la variable x.

var i : int = 29;
var x : double = i;

Pour plus d'informations, consultez Conversion de type.

Égalité

À l'inverse d'autres langages de programmation, JScript n'utilise pas le signe égal comme opérateur de comparaison, mais uniquement comme opérateur d'assignation. Pour comparer deux valeurs, vous pouvez recourir à l'opérateur d'égalité (==) ou à l'opérateur d'identité (===).

L'opérateur d'égalité compare des chaînes primitives, des nombres et des valeurs booléennes par valeur. Si deux variables ont la même valeur, après une éventuelle conversion de type, l'opérateur d'égalité retourne la valeur true. Les objets (y compris les objets Array, Function, String, Number, Boolean, Error, Date et RegExp) sont comparés par référence. Même si deux variables d'objet présentent la même valeur, la comparaison ne retourne la valeur true que dans le cas où les variables font exactement référence au même objet.

L'opérateur d'identité (===) compare la valeur et le type de deux expressions ; la valeur true est retournée uniquement si les deux expressions sont considérées comme équivalentes avec l'opérateur d'égalité et si le type de données est identique pour les deux opérandes.

Notes

L'opérateur d'identité ne fait pas la différence entre les divers types de données numériques. Il est important de bien comprendre la différence entre l'opérateur d'assignation, l'opérateur d'égalité et l'opérateur d'identité.

Les comparaisons que vous effectuez dans vos scripts ont toujours une valeur booléenne comme résultat. Observons la ligne de code JScript suivante.

y = (x == 2000);

Dans cet exemple, la valeur de la variable x est testée de façon à vérifier si elle est égale au nombre 2000. Si tel est le cas, le résultat de la comparaison est la valeur booléenne true, qui est assignée à la variable y**.** Si x n'est pas égal à 2000, la comparaison retourne comme résultat la valeur booléenne false, assignée à y.

L'opérateur d'égalité effectue une conversion de type pour vérifier si les valeurs sont identiques. Dans la ligne suivante de code JScript, la chaîne littérale "42" sera convertie en nombre avant d'être comparée au nombre 42. Le résultat a la valeur true.

42 == "42";

Les objets sont comparés à l'aide de règles différentes. Le comportement de l'opérateur d'égalité dépend du type des objets. Si les objets sont des instances d'une classe qui est définie avec un opérateur d'égalité, la valeur retournée dépend de l'implémentation de l'opérateur d'égalité. Les classes qui fournissent un opérateur d'égalité ne peuvent pas être définies dans JScript, même si d'autres langages du .NET Framework autorisent de telles définitions de classe.

Les objets sans opérateur d'égalité défini, tel qu'un objet basé sur l'objet Object JScript ou une instance d'une classe JScript, sont considérés comme égaux uniquement si les deux objets font référence au même objet. En d'autres termes, deux objets distincts qui contiennent les mêmes données sont considérés comme différents. L'exemple suivant illustre ce comportement.

// A primitive string.
var string1 = "Hello";
// Two distinct String objects with the same value.
var StringObject1 = new String(string1);
var StringObject2 = new String(string1);

// An object converts to a primitive when
// comparing an object and a primitive.
print(string1 == StringObject1);   // Prints true.

// Two distinct objects compare as different.
print(StringObject1 == StringObject2);   // Prints false.

// Use the toString() or valueOf() methods to compare object values.
print(StringObject1.valueOf() == StringObject2);   // Prints true.

Les opérateurs d'égalité sont particulièrement utiles dans les instructions de condition des structures de contrôle. Dans ce cas, vous combinez un opérateur d'égalité avec une instruction qui l'utilise. Observons l'exemple de code JScript suivant.

if (x == 2000)
   z = z + 1;
else
   x = x + 1;

Dans JScript, l'instruction if...else exécute une action (dans ce cas, z = z + 1) si la valeur de x est 2000 et une autre action (x = x + 1) si la valeur de x n'est pas 2000. Pour plus d'informations, consultez Structures conditionnelles JScript.

L'opérateur d'identité (===) effectue une conversion de type uniquement sur des types de données numériques. En d'autres termes, le nombre entier 42 est considéré comme identique au nombre 42 de type double, mais ces derniers ne sont pas identiques à la chaîne « 42 ». Ce comportement est illustré dans le code JScript ci-dessous.

var a : int = 42;
var b : double = 42.00;
var c : String = "42";
print(a===b); // Displays "true".
print(a===c); // Displays "false".
print(b===c); // Displays "false".

Voir aussi

Concepts

Données booléennes

Conversion de type

Autres ressources

Visite guidée du langage JScript

Structures conditionnelles JScript