Auteur: Ludovic PATEY

Publié le 12 février 2008

Modifié le: 14 septembre 2008

Page d'accueil

Les opérateurs

Vous êtes ici : Accueil / Cours / Cours de Javascript / Débuter en Javascript

Nous allons maintenant nous intéresser à la manipulation des données. Comme nous l’avons vu, les variables ne sont pas typées, mais les données le sont. Pour rappel, il existe 5 types de données : les nombres entiers, les nombres décimaux, les chaînes de caractère, les booléens et les objets.

Il est possible de regrouper les opérateurs suivant plusieurs types de catégories : en fonction des données qu’ils manipulent ou en fonction de leur type d’action. Nous allons essayer de combiner au mieux les 2.

La plupart des opérateurs que nous présenterons seront des opérateurs binaires, c’est à dire qu’ils s’appliquent sur 2 données et renvoient 1 donnée. Par exemple, l’addition s’applique sur 2 nombres et renvoie un nombre qui est la somme des 2 autres.

Les opérateurs mathématiques

Les opérations mathématiques de base sont disponibles sous forme des opérateurs suivants :

- + pour l’adition
- - pour la soustraction
- / pour la division
- * pour la multiplication
-  % pour le reste de la division euclidienne

Ils s’appliquent bien entendu à des nombres entiers ou décimaux.

Prenons un petit exemple :

var division = 15/3;  // division vaut 5
var multiplication = 7*2;  // multiplication vaut 14
var somme = 6+6;  // somme vaut 12
var soustraction = 11 - 2;  // soustraction vaut 19
var euclide = 10 % 3;  // euclide vaut 1

Les opérateurs d’affectation

Un opérateur d’affectation sert à modifier le contenu d’une variable en lui assignant une nouvelle valeur.

Le premier opérateur d’affectation a déjà été vu sans être nommé comme tel : c’est le égal ( = ).

Les autres opérateurs d’affectation sont en fait de simples raccourcis mis à la disposition des développeurs pour les opérations répétitives. Ils n’apportent aucune nouvelle manipulation, mais simplifient la vie :

var division = 15;
var multiplication = 7;
var somme = 6;
var soustraction = 11;
var euclide = 10;


division /= 3;  // équivaut à division = division / 3
multiplication *= 7;  // équivaut à multiplication = multiplication * 7
somme += 6; // équivaut à somme = somme + 6
soustraction -= 2; // équivaut à soustraction = soustraction - 2
euclide %= 3; // équivaut à euclide = euclide % 3

Pré/Post incrémentation/décrémentation

Les opérateurs d’affectation présentés précédemment sont des raccourcis de l’opérateur égal ( = ) car ces opérations étaient effectuées souvent.

Cependant, il existe des opérations répétitives encore plus spécifiques et d’autres raccourcis ont été créés : les incrémentations et décrémentation.

Cette appellation bien qu’impressionnante, exprime l’idée toute simple que l’on ajoute 1 à la valeur de la variable, ou qu’on lui retire 1 ( dans le cadre d’une décrémentation ).

var i = 5;

i++;  // équivaut à i += 1  ou à i = i + 1

// i vaut 6

i--;  // équivaut à i -= 1 ou à i = i - 1


// i vaut 5

Les opérateurs présentés sont respectivement des post incrémentations et post décrémentations.

Il existe des pré incrémentations :

var i = 5;

++i;  // équivaut à i += 1  ou à i = i + 1

// i vaut 6

--i;  // équivaut à i -= 1 ou à i = i - 1


// i vaut 5

Mais alors quelle est la différence ? Tout simplement, l’ordre d’exécution. Pour mettre la différence en valeur, nous allons de nouveau avoir recours à la fonction alert() qui affiche dans une boite de dialogue ce qui est passé en paramètre.

var i = 5;

alert( i++ );  // Affiche 5

// i vaut 6

alert( ++i ); // Affiche 7

Comme vous le voyez, l’opération d’incrémentation s’est effectuée après l’affichage lors d’une post incrémentation.

Les opérateurs de comparaison

Il est très utile de pouvoir comparer des données, par exemple pour savoir laquelle est la plus grande des 2. Les opérateurs de comparaison prennent en paramètre 2 données et retournent un booléen qui vaut true ou false. Voici une liste d’opérateurs de comparaison :

- == Comparaison entre 2 valeurs.

- === Comparaison entre 2 valeurs et entre leurs types ( voir les objets )

- > Opérateur de stricte supériorité ( 3 > 2 retourne true mais 3 > 3 retourne false )

- < Opérateur de stricte infériorité ( 2 < 3 retourne true mais 3 < 3 retourne false )

- >= Opérateur "supérieur ou égal" ( 2 >= 2 retourne true )

- <= Opérateur "inférieur ou égal" ( 2 <= 2 retourne true )

-  != Opérateur "différent de" ( 3 != 2 retourne true ) ;

-  !== Opérateur "différent de" avec vérification des types. ( voir les objets )

Attention : le égal et < > ! ne peuvent pas s’intervertir. =< générera un message d’erreur.

Remarque : Les opérateurs de supériorité et d’infériorité peuvent également s’appliquer aux chaînes de caractères : en effet, un caractère est encodé selon les normes ASCII, or il se trouve que leurs valeurs suivent l’ordre alphabétique. Ainsi, ’A’ < ’E’ retourne true.

Les opérateurs logiques

Les opérateurs logiques sont des opérations effectuées sur une ou plusieurs valeurs booléennes et qui retournent un booléen. Pour chaque opérateur logique, nous allons donner la table de vérité. Voici la liste des opérateurs logiques :

- && Correspond au ET logique

Voici la table de vérité du ET :

aba && b
falsefalsefalse
falsetruefalse
truefalsefalse
truetruetrue

- || Correspond au OU logique

Voici la table de vérité du OU :

aba || b
falsefalsefalse
falsetruetrue
truefalsetrue
truetruetrue

-  ! Correspond au NON logique. C’est un opérateur unaire, c’est à dire qu’il ne s’applique qu’à une valeur.

Voici la table de vérifé du NON :

a !a
falsetrue
truefalse

L’opérateur de concaténation

Une concaténation est l’ajout bout à bout de 2 chaines de caractères. ( Javascript accepte également de concaténer une chaine de caractère et un nombre. Le résultat sera une chaîne )

L’opérateur de concaténation est le + L’opérateur d’affectation qui lui correspond est le +=

Attention ! ne confondez pas l’opérateur de concaténation et l’opérateur d’adition. Même si les symboles utilisés sont les mêmes, l’opération, elle, est totalement différente :

var i = 2;
var j = '2';

alert( i + 3 ); // Affiche 5
alert( j + 3 ); // Affiche 23

La première opération a été une adition. La seconde une concaténation. Dès lors qu’une chaîne de caractère entre en jeu, le + devient l’opérateur de concaténation.

Les opérateurs binaires

Ces opérateurs sont assez peu usités en Javascript. Il n’est pas essentiel de les maîtriser pour réaliser des applications web. Pour les comprendre, il est nécessaire de faire une petite introduction au binaire :

Un ordinateur ne peut manipuler que des données binaires ( une suite de 0 et de 1 ). Toute donnée manipulée est traduite en binaire de manière transparente pour le développeur. Il est cependant possible d’effectuer directement des opérations sur les bits.

Un bit valant 0 ou 1, il est facilement assimilable à un booléen.

Les opérateurs bit à bit sont au fait des opérateurs logiques qui s’exécutent sur chaque bit indépendamment des autres. En voici la liste :

- & Correspond au ET logique sur chaque bit

- | Correspond au OU logique sur chaque bit

- ^ Correspond au OU exclusif logique sur chaque bit

Voici la table de vérité du OU exclusif :

aba | b
falsefalsefalse
falsetruetrue
truefalsetrue
truetruefalse

Parmi les opérateurs agissant au niveau binaire, il existe des opérateurs de décalage. Ils effectuent tout simplement une rotation ou un décalage des bits vers la gauche ou la droite.

- << Effectue une rotation de n bits vers la gauche

- >> Effectue une rotation de n bits vers la droite

- >>> Décale les bits à droite et remplis les bits de gauche avec des 0

- ~ Non binaire : effectue un NON sur chacun des bits.

Nous ne détaillerons pas ces opérateurs. Si vous voulez vous documenter dessus, consultez la documentation officielle de firefox.

L’opérateur typeof

Il est souvent nécessaire de connaître le type d’une donnée avant de la manipuler. L’opérateur typeof permet de préciser quel est le type de la donnée précisée après le mot-clé.

// Affiche "string"
alert( typeof "Hello World" );

Les autres opérateurs

Il existe quelques autres opérateurs comme instanceof ou l’opérateur ternaire. Ils seront expliqués plus loin dans le cours.

Commentaires

Auteur :

Message :