JavaScript - Synthèse sur la syntaxe
Sommaire partie 4
Les boîtes de dialogues
Servent à dialoguer avec l'utilisateur. Il en existe trois sortes.
Afficher du texte
La première, alert(message) , affiche un message (une chaîne de caractères) à l'utilisateur.
Code : JavaScript
1 alert('Bonjour');
Ce qui donne sur ce lien
|
 |
Demander une chaîne de caractères
La boîte de dialogue prompt(message, valeur) demande à l'utilisateur d'entrer du texte.
Si l'utilisateur clique sur "Annuler ", la fonction renvoie alors null .
Le message sera affiché au-dessus du champ pour saisir le texte, champ qui aura initialement la valeur précisée.
Code : JavaScript
1 var commentaire = prompt("Dites-nous ce que vous voulez", "Votre message ici");
Ce qui donne : dites-nous ce que vous voulez …
|
 |
Demander "oui" ou "non"
La dernière, confirm(message) , affiche le message, ainsi que deux boutons : Ok et Annuler .
La valeur renvoyée est true si l'utilisateur clique sur "Ok", false sinon.
Code : JavaScript
1 var continuer = confirm("Voulez-vous continuer ?");
Ce qui donne : Voulez-vous continuer ? …
|
 |
Où se place le JS ?
Le code JS peut se placer :
- soit directement dans les balises HTML, à l'aide d'un gestionnaire d'événements
- soit entre des balises propres au JS
- soit dans un fichier externe, portant l'extension .js, qui sera importé au chargement de la page.
gestionnaires d'événements
Un gestionnaire d'événements est un attribut (une propriété) qui se place dans une balise HTML, qui s'écrit sous la forme
onevenement.
Son rôle est de lancer le script lorsque l'événement spécifié se produit.
Exemple :
Code : JavaScript
1 <a href="#" onclick="alert('Salut')">Cliquez</a>
Ce qui donne :
Cliquez
 |
Le gestionnaire d'événements est un attribut d'une balise HTML, et doit donc s'écrire en minuscules pour que la page soit valide. |
Quelques événements (ne pas oublier le
on devant) :
- click : un clic de la souris sur l'élément concerné
- dblclick : un double-clic sur cet élément
- mouseover : la souris passe sur cet élément
- mouseout : la souris sort de cet élément (en quelque sorte le contraire de
mouseover
).
Balises propres au JS
Le code JS peut aussi se placer entre ces balises :
Code : JavaScript
1 <script type="text/javasript">
2 <!--
3
4 //-->
5 </script>
 |
Les "flèches" servent à masquer le JS aux anciens navigateurs qui ne peuvent pas l'interpréter.
En leur absence, ces derniers afficheraient le code au milieu de la page. |
Ces balises peuvent se placer :
- soit dans l'en-tête (
head
) de la page web : on y place du code qui doit être "mis en mémoire" pour être exécuté plus tard.
Un exemple typique : les déclarations de fonctions.
- Soit dans le corps (
<body></body>
) de la page, pour le code à exécuter au chargement de celle-ci.
Par exemple, des fonctions pour initialiser ou lancer un script.
Importer un fichier externe
La dernière méthode (la plus "propre") consiste à écrire le code JS dans un fichier séparé, portant l'extension
.js
.
On importe ensuite ce fichier à l'aide des balises précédentes, utilisées comme ceci (
fichier.js
étant le nom du fichier à importer) :
Code : HTML
1 <script type="text/javasript" src="fichier.js"></script>
De même, cette ligne peut se placer soit dans l'en-tête, soit dans le corps de la page, selon les mêmes règles que pour le paragraphe précédent.
Lisibilité du code
Les variables
En fait, le Javascript n'autorise la manipulation que de 4 types de données :
- des nombres : entiers ou à virgules
- des chaînes de caractères (string): une suite de caractères
- des booléens : des variables permettant de vérifier une condition. Les booléens peuvent prendre deux états :
- true : si le résultat est vrai
- false : si le résultat est faux.
- des variables de type null : un mot caractèristique pour indiquer que la variable ne contient aucune donnée.
Utilisation des variables
Les variables servent à stocker des données.
Déclaration
Pour créer (on dit
déclarer) une variable, on utilise le mot-clé
var
, suivi du nom qu'on veut lui donner :
Code : JavaScript
1 var age;
 |
Le nom ne peut être composé que des 26 lettres, majuscules et / ou minuscules (JS fait la différence entre les deux), des 10 chiffres et du underscore (trait de soulignement).
De plus, le nom ne doit pas commencer par un chiffre. |
 |
Certains mots-clé sont déjà utilisés en JS.
Ainsi, il y a certains mots, comme, break , case , char , continue , delete , double , final , long , new , public et super , qu'on ne peut pas utiliser comme nom de variable (ou de fonction). |
La déclaration se fait (sauf exception) en une seule fois.
Affectation
Pour
affecter une valeur à une variable, on utilise le signe
= comme ceci :
Code : JavaScript
1 age = 18;
Initialisation
Il est possible d'affecter une valeur à une variable lors de sa déclaration.
Code : JavaScript
1 var age = 18;
Variables locales
Une variable déclarée &agarve; l'intérieur d'une fonction n'est accessible qu'à l'intérieur de cette même fonction.
On parle de variable
locale.
 |
Il faut utiliser autant que possible des variables locales.
Cela évitera bon nombre de problêmes. |
Types de données
Une variable peut contenir différents types de données.
Présentation de deux types récurrents : les nombres et les chaînes de caractères.
Les nombres
Exemple : on veut créer une variable
pi
contenant le nombre 3.14
Code : JavaScript
1 var pi = 3.14;
 |
On utilise le point à la place de la virgule. |
Il y a 5 opérations de bases : l'
addition (
+), la
soustraction (
-), la
multiplication (
*), la
division (
/) et le
modulo (
%).
 |
modulo :
a % b (si b est positif) est le reste dans la division euclidienne de a par b. |
Dans cet exemple, on verra s'afficher
3 (car 18 = 5 x 3 +
3) :
Code : JavaScript
1 alert(18%5);
Il existe des opérateurs supplémentaires pour faciliter les calculs avec des variables :
- += / -= / *= / /= pour : augmenter de / diminuer de / multiplier par / diviser par un nombre la valeur d'une variable.
De même, il existe aussi %=.
- ++ et -- pour incrémenter / décrémenter de 1 la valeur d'une variable.
Exemple :
Code : JavaScript
1 // Les 3 dernières lignes sont équivalentes
2 / on augmente a chaque fois de 1 la valeur de n
3 var n =0;
4 n = n+1;
5 n += 1;
6 n++;
Les chaînes de caractères
Une chaîne de caractère, c'est… du texte.
Elle est délimitée par des guillemets
" ou bien par des apostrophes
'.
Code : JavaScript
1 var chaine = "Je suis une chaine de caracteres";
2 var msg = 'Eh bien moi aussi !';
On utilise un
caractère d'échappement pour certains caractères spéciaux, comme :
- \n pour un retour à la ligne
- \' et \" pour une apostrophe / un guillemet
- \\ pour afficher un antislash
- \uXXXX pour insérer le caractère dont la valeur unicode est XXXX.
On utilise le signe
+ pour concaténer (mettre bout-à-bout) plusieurs chaînes de caractères.
Exemple :
Code : JavaScript
1 var age = 18;
2 alert("Vous avez " + age + " ans");// on concatene les bouts de phrases
(Noter que le nombre
18 est converti automatiquement en chaîne de caractères, pour pouvoir ensuite être concaténé.)
L'opérateur
+= sert à ajouter une chaîne de caractères à la fin d'une variable.
Dans cet exemple, on ajoute un retour à la ligne à la fin :
Code : JavaScript
1 var msg = "Bonjour";
2 msg += "\n";
On peut utiliser les fonctions
parseInt(chaine)
et
parseFloat(chaine)
pour convertir une chaîne de caractères en nombre (
int : entier ou
float : décimal).
C'est utile pour additionner des nombres qui sont enregistrés sous forme de chaînes de caractères : le signe
+ les concatène si on l'utilise directement.
Code : JavaScript
1 var a = "1";
2 var b = "8";
3 alert(a+b);// affiche 18
4 alert(parseInt(a)+parseInt(b));// affiche 9
Conditions, tests et boucles
Les booléens
On a déjà vu deux types de variables : les nombres et les chaînes de caractères.
On va voir un troisième type de variables : les booléens. Ces variables ont deux valeurs possibles : vrai (true
), ou faux (false
).
Voyons leur fonctionnement et à quoi ç sert…
Comparer des nombres
On peut obtenir des booléens en
comparant des valeurs.
On dispose d'
opérateurs de comparaison, qui sont au nombre de 6 :
- opérateur "égal à", ==
- opérateur "est différent de", !=
- opérateur "strictement plus grand que", >
- opérateur "strictement plus petit que", <
- opérateur "plus grand ou égal à", >=
- opérateur "plus petit ou égal à", <=
Exemple : une variable
est_majeur
qui contient
vrai uniquement si l'âge saisi par l'utilisateur est plus grand ou égal à 18.
Code : JavaScript
1 var age = prompt("Quel age avez-vous ?");
2 var est_majeur = (age >= 18);
Noter que les parenthèses autour de la condition servent à bien la distinguer (elles ne sont pas obligatoires, on les met si on veut).
Opérations sur les booléens
On a vu qu'on peut additionner ou multiplier des nombres et concaténer des chaînes de caractères.
Il existe aussi des opérations sur les booléens, au nombre de trois :
- la négation, notée ! (si
a
est vrai, !a
est faux, et inversement)
- le ET logique && : on a
a && b
qui est vrai si et seulement si a
et b
sont vrais
- le OU logique || :
a || b
est vrai si et seulement si au moins l'une des deux valeurs est vraie.
Les conditions
IF … ELSE …
On peut effectuer un test, pour exécuter des instructions différentes selon la valeur d'un booléen.
Voici la syntaxe :
Code : JavaScript
1 if(booleen)
2 // instruction a executer si le booleen est vrai
3 else
4 // instruction a effectuer s'il est faux
 |
Avec cette écriture, on ne peut mettre qu'une instruction dans chaque "membre".
Si on a plusieurs instructions, il suffit de les placer entre accolades, { et }. |
Le
else
n'est d'ailleurs pas obligatoire, on peut n'écrire que :
Code : JavaScript
1 if(booleen)
2 // instruction a executer si le booleen est vrai
Un exemple :
Code : JavaScript
1 var age = prompt("Quel age avez-vous ?");
2 if (age >= 18)
3 {
4 alert("Vous êtes majeur.");
5 alert("Mais il n'est jamais trop tard pour apprendre à programmer :D");
6 }
7 else
8 alert("Tu es mineur");
On peut bien sûr effectuer des tests les uns à l'intérieur des autres (imbriqués).
IF avec autre chose qu'un booléen
 |
Et si on met autre chose qu'un booléen dans le if ? |
Dans ce cas, JS va essayer de "convertir" la chose en booléen.
Le résultat sera
false uniquement dans les cas suivants :
0
(zéro)
••
ou '' (chaîne de caractères vide)
undefined
(variable déclarée mais non définie)
null
(mot-clé utilisé pour des objets "vides")
SWITCH
Mais il arrive qu'on ait besoin de tester plusieurs valeurs pour une même variable.
Dans ce cas, il est possible d'utiliser plusieurs tests :
if … else if … else if … else …
.
Mais il existe une syntaxe moins lourde.
Voyons : on va distinguer plusieurs cas concernant le nombre d'enfants de l'utilisateur.
Code : JavaScript
1 var nb = prompt("Combien avez-vous d'enfants ?");
2 switch(nb)
3 {
4 case 0: // si le nombre est 0…
5 alert("Au moins, vous êtes tranquilles :p"); // … on affiche un message…
6 break; // … et on arrete le "switch" ici
7 case 1: // si le nombre est 1
8 alert("Oh il est tout seul…");
9 break;
10 case 2:
11 case 3:
12 // s'il y en a 2 ou 3
13 alert("Il doit y avoir de l'ambiance chez vous ^^");
14 break;
15 case 4:
16 alert("Jolie famille !");
17 break;
18 default: // si c'est aucune des valeurs precedentes
19 alert("Plus de 4 enfants ?! Waow…");
20 break;
21 }
En rentrant dans le
switch
, l'ordinateur exécute le code à partir du
case
correspondant, et quitte le
switch
lorsqu'il rencontre
break
.
Les boucles
Les boucles permettent de répéter des instructions tant qu'une condition est vraie.
On distingue trois types de boucles, adaptées à des situations différentes.
WHILE
La première est très classique :
Code : JavaScript
1 while(condition)
2 // action
On répète l'action tant que la condition est vraie.
Noter que si la condition est fausse dès le début, l'action n'est jamais effectuée.
Exemple :
Code : JavaScript
1 var i=0;
2 while(i<10)
3 {
4 var j = i*i;
5 alert("Le carré de " + i + " est " + j);
6 i++;
7 }
FOR
La boucle
for
est une variante, plus complète, de la boucle
while
.
Elle s'utilise sous cette forme :
for(initialisation ; condition ; incrémentation)
:
- l'initialisation se fait une seule fois, au début de la boucle
- la boucle est exécutée tant que la condition est vraie
- à la fin de chaque tour de boucle, l'incrémentation est effectuée.
 |
Cette boucle est très utilisée, car elle convient souvent au besoin.
Mais chaque boucle a une utilisation particulière : on choisit cette boucle avant tout parce qu'elle convient à notre problème, et non pas uniquement parce qu'elle est pratique. |
Un exemple :
Code : JavaScript
1 for(var i=0; i<10; i++)
2 alert(i);
Ce qui est équivalent à :
Code : JavaScript
1 var i=0;
2 while(i<10)
3 {
4 alert(i);
5 i++;
6 }
 |
Il faut éviter d'utiliser à l'intérieur de la boucle la variable servant de compteur (les parenthèses servent justement à regrouper tout ce qui la concerne).
Inversement, on évitera de mettre dans ces parenthèses des choses qui n'ont rien à voir avec ce compteur. |
DO … WHILE
Cette dernière boucle est un peu différente des précédentes.
En effet, la condition est évaluée à la fin de la boucle : les instructions seront toujours exécutées au moins une fois, même si la condition est fausse dès le départ.
Cette particularité fait qu'elle a une utilisation différente.
Sa syntaxe est la suivante :
Code : JavaScript
1 do
2 // instruction a repeter
3 while(condition);
 |
Noter la présence du point-virgule à la fin.
Ceci est dû au fait que la condition est à la fin de la boucle. |
Voici un exemple : on demande une chaîne de caractères à l'utilisateur tant qu'il ne clique pas sur "
Annuler
".
Code : JavaScript
1 var msg;
2 do
3 msg = prompt("Entrez ce que vous voulez, ou cliquez sur Annuler");
4 while(msg);
 |
On effectue ici un test avec une valeur qui n'est pas un booléen, comme ça a été expliqué quelques paragraphes plus haut. |
Réaliser une affectation dans une condition
Noter qu'on peut combiner une affectation et une condition.
Autrement dit, faire quelque chose comme ceci :
Code : JavaScript
1 var msg;
2 while( (msg = prompt("Entrez du texte")) != null)
3 alert(msg);
Pour comprendre cette condition, on peut la séparer en deux, comme ceci :
Code : JavaScript
1 msg = prompt("Entrez du texte"); // c'est l'affectation, entre les parentheses
2 msg != null; // c'est la condition
Et en effectuant le test directement avec une valeur qui n'est pas booléenne, on peut écrire ceci :
Code : JavaScript
1 var msg;
2 while( (msg = prompt("Entrez du texte"))
3 alert(msg);
 |
Il faut bien comprendre que le signe = est le signe d'affectation !
En décomposant la condition, ça nous donne :
Code : JavaScript
1 msg = prompt("Entrez du texte");// affectation
2 msg;// le test, avec une valeur qui n'est pas booleenne
|
Les tableaux
Les fonctions