- introduction à javascript
- javascript ans une page HTML
- déclaration de variables en javascript
- affectation
- séquence d'instructions
- "debuggage", utilisation de Firebug
- introduction à la portée de variables
- environnement
Introduction à Javascript
Heureusement le noyau du langage ne change pas et les concepts encore moins, et la plupart de ce qui sera présenté sera valide sur tous les navigateurs. Cependant nous nous basons sur le javascript contenu dans des versions de Firefox supérieures à la version 3.6.
Nous utiliserons le langage Javascript. Il s'agit d'un langage
de programmation qui permet d'ajouter des traitements au sein d'une
page web (au format HTML).
L'utilisation de code dans le langage Javascript au sein d'une
page HTML permet d'obtenir une page dont le contenu (ou du moins une
partie de celui-ci) est calculée par le traitement réalisé en
Javascript. On peut ainsi produire des pages "dynamiques" et
dont le contenu peut par exemple s'adapter à un contexte particulier
qui peut être le résultat de choix de l'utilisateur de la page.
Le code Javascript est interprété par le navigateur, comme
celui-ci interprète le code HTML et la feuille de style CSS. Le
code Javascript doit être placé dans une balise HTML
particulière, la balise script
. La balise ouvrante
contient une information supplémentaire précisant qu'il s'agit de
code Javascript. Une première manière de procéder consiste à placer
le code Javascript directement dans la page HTML, au sein de la
balise script
comme ceci :
<html> ... <body> du code HTML ici <script type="text/Javascript"> ... CODE JAVASCRIPT ICI ... </script> du code HTML ici </body> </html>
Cela a pour effet d'alourdir un peu le code HTML écrit mais tout à un coût. De plus ce code n'est "visible" que pour le rédacteur de la page.
Une page HTML peut contenir plusieurs balises de script.
Variables en Javascript
Comme cela a déjà été vu avec le code HTML, l'écriture de code informatique nécessite le respect d'une syntaxe précise. Une partie du travail d'apprentissage d'un langage de programmation consiste donc à en connaître la syntaxe. La bonne utilisation de cette syntaxe afin de produire des codes dont l'exécution aboutit au résultat souhaité est évidemment une seconde partie essentielle de cet apprentissage.
Déclaration
Pour définir (on utilise également le verbe déclarer) une
variable en Javascript il faut utiliser le mot-clé var
suivi de l'identificateur (le nom) de
la variable que l'on souhaite déclarer. Par exemple :
;
qui
conclut l'instruction de déclaration. Il représente le caractère de
"fin de phrase". Même si cela n'est pas obligatoire il est très
vivement conseillé, et presque toujours observé, d'aller à la ligne
après chaque instruction.
var uneVariable;
Les identificateurs doivent respecter certaines règles : ils sont
composés de lettres (il faut éviter les accents), de chiffres, du
caractère dollar ($) et de caractères de soulignement ('_'), sans
espace et ne doivent pas commencer par un chiffre. De plus certains
noms sont interdits car déjà utilisés par le langage, on parle
de noms réservés. C'est par exemple le cas du
mot var
et on comprend bien pourquoi.
Les noms de variables suivants sont donc autorisés :
x y$ x1 laTemperature une_autre_temperature _duree_en_secondes $nomArtiste
temperature
, nomDuJour
ou couleurDAffichage
à t
, n
ou c
. Même si cela implique que le code à écrire est plus
long, tous les programmeurs s'accordent à dire que cela facilite
beaucoup la production et la lecture du code.
Enfin, le langage fait la distinction entre les majuscules et les
minuscules. Les variables d'identificateurs temperature
et Temperature
sont donc différentes.
Utiliser une variable c'est utiliser son identificateur dans une expression. Celui-ci est évalué à la valeur de la variable. Il faut donc attribuer une valeur à la variable. On parle d'initialisation de la variable.
Attribuer une valeur
Une variable est un couple (identificateur, valeur). Nous avons pour
l'instant défini l'identificateur mais aucune valeur n'a été
associée. Pour attribuer, ou affecter, une valeur à une
variable on utilise l'opérateur
d'affectation =
. Il s'agit d'un opérateur binaire,
l'opérande de gauche est l'identificateur de la variable dont on fixe
la valeur et l'opérande de droite est une expression dont la valeur
est affectée à la variable.
identificateur = valeur;
Chaque affectation sur une variable modifie sa valeur, la valeur précédente est oubliée.
Il est possible d'affecter une valeur à une variable en même temps que sa déclaration.
//
désignent des
commentaires, le texte qui suit ces lignes est ignoré par le
langage. Les commentaires sont utilisés par le programmeur pour
laisser des "notes" dans le code qu'il a écrit. Ces informations sont
à destination des autres programmeurs (ou lui-même) et sont destinées
à faciliter la compréhension du code écrit. Un commentaire doit donc
être concis, précis et informatif.
Tout bon programmeur se doit de laisser des commentaires dans le
code qu'il produit.
Il est également possible de produire des commentaires sur plusieurs lignes en les encadrant des signes
/*
et */
.
var temperature; // définit la variable temperature temperature = 37; // fixe la valeur de temperature à 37 var _duree_en_secondes = 324; // définit la variable _duree_en_secondes et fixe sa valeur à 324 _duree_en_secondes = 238; // modifie la valeur de _duree_en_secondes qui vaut maintenant 238
La partie droite d'une affectation peut en fait être une expression. Cette expression sera évaluée (calculée) et c'est le résultat de cette évaluation qui constituera la valeur affectée à la variable.
var n = 12+5; // la variable n est créée avec la valeur 17 var numero = 10+n; // la variable numero est créée avec la valeur 27 numero = numero+1; // modifie la valeur de numero qui vaut maintenant 28
Première utilisation dans une page web
Pour un premier exemple, nous allons faire très simple en créant et initialisant 2 variables numériques et en affichant dans la page le résultat de leur somme.
document
est en fait une variable particulière créée par
le navigateur et dont la valeur est le contenu du document géré par
le navigateur.
Pour pouvoir réaliser l'affichage nous allons utiliser une instruction particulière :
document.writeln(expression);
dont l'exécution produit l'écriture du résultat de l'évaluation
de expression
dans la page HTML à l'endroit où
cette instruction Javascript est placée. Ce code (devenu HTML) est
ensuite interprété par le navigateur pour son affichage.
Il faut donc créer une page HTML dans laquelle on va placer d'une part le code de déclaration des variables :
<script type="text/Javascript"> var nombre1 = 12; var nombre2 = 20; </script>
puis d'autre part le message qui affiche leur somme :
<p> Le résultat de la somme est <script type="text/Javascript"> document.writeln(nombre1+nombre2); </script>. </p>
Attention aux fautes de frappe ! Assurez-vous de ne pas avoir fait d'erreur de copie, en oubliant un ; ou un " par exemple.
Voir également plus bas.
Avez-vous sauvegardé après avoir modifié ? Avez-vous rechargé la page ensuite ?
Le résultat de la somme de 12 et 20 est 32.On modifiera la feuille de style pour que les valeurs des 2 nombres soient affichées en vert.
Evidemment une modification de la valeur d'une variable au moment de la déclaration doit suffire pour entrainer une modification du texte affiché dans la page sans que l'on ait à modifier autre chose. Validez ce point en remplaçant dans la déclaration de la variable
nombre1
(et uniquement à cet endroit) 12 par 22.
Séquence d'instructions
Une portion de code Javascript délimité par la
balise script
peut contenir plusieurs expressions
Javascript. C'était le cas ci-dessus avec le bloc de déclaration des
deux variables nombre1
et nombre2
. On
parle alors de séquence
d'instructions et ces expressions sont évaluées les unes
après les autres dans leur ordre d'écriture.
Le ;
déjà évoqué est le séparateur entre les
expressions d'un séquence. On peut considérer qu'il joue le rôle des
adverbes de temps puis ou ensuite en
Français : évaluer var nombre1=10
puis
évaluer var nombre2=12
ou évaluer var
nombre1=10
ensuite évaluer var
nombre2=12
.
Des erreurs dans mon code...
Firebug est un module (ou extension) de Firefox qui dispose d'un certain nombre d'outils utiles pour le développement de page web utilisant HTML, CSS et Javascript.
Pour l'installer il faut aller sur le site des modules de Mozilla et y trouver Firebug. Le plus simple est certainement de simplement faire une recherche avec comme mot-clé "firebug", le premier lien-réponse devrait être le bon.
Il faut ensuite cliquer sur le bouton qui propose de l'ajouter au navigateur et accepter l'installation.
Firebug s'active par l'appui de la touche F12, via le (nouveau) bouton représentant une espèce de coccinnelle ou en passant par le menu Outils.
Nous commençons à écrire du code et risquons très vite d'être
confrontés au problème des erreurs dans le code, erreurs de syntaxe
notamment. Un des problèmes des programmeurs, en particulier les
débutants, est de savoir trouver ces erreurs.
Heureusement il existe des outils qui facilitent ce travail. Ceux-ci
disposent d'un analyseur syntaxique (comme les validateurs HTML
ou CSS déjà étudiés) capable de trouver les erreurs de syntaxe dans un
code et, le plus souvent, de transmettre un message indiquant où se
trouve l'erreur et quelle en est la cause probable.
Il est important et même indispensable de savoir retrouver les erreurs
et comprendre les messages d'erreur afin de pouvoir corriger le code
en autonomie.
En ce qui nous concerne nous allons utiliser l'outil Firebug pour
retrouver ces erreurs.
<script type="text/Javascript"> document.wrteln(nombre+nombre2); </script>
Une zone s'active en bas de la fenêtre du navigateur. Pour ce premier contact avec Firebug nous allons nous contenter du premier onglet intitulé "Console". Dans cette zone nous trouvons affichés la portion de code Javascript qui pose problème, un message d'erreur en rouge, le nom du fichier contenant l'erreur et le numéro de la ligne dans le fichier qui contient l'erreur.
Le message d'erreur, "nombre is not defined"
, nous indique que l'on
utilise une variable nombre
qui n'est pas définie, et en
effet puisque c'est nombre1
que nous voulions utiliser à
cet endroit.
Que constate-t-on ?
Utilisez Firebug pour localiser la nouvelle erreur, quel est le message ?
L'erreur de frappe provoque cette fois la non reconnaissance d'une fonction (
writeln
). Corrigez et vérifiez que tout est
correct maintenant.
Les messages d'erreur sont hélas parfois moins explicites, c'est pourquoi il faut apprendre à analyser le code... Parfois une seule erreur peut par propagation en générer plusieurs au niveau de l'interprète.
nombre2
en la remplaçant par :
va nombre2 = 20;
- Consultez la console de Firebug.
- Combien d'erreurs sont mentionnées ?
- A quelles lignes sont-elles signalées ?
- Que pensez-vous du premier message d'erreur ?
- Que signifient les autres messages d'erreur ? Comment les expliquer ?
- Corrigez cette première erreur et consultez à nouveau la console.
Valeurs non initialisées
nombre1
:
<script type="text/Javascript"> var nombre1; </script>Rechargez la page, que constate-t-on ?
Des erreurs sont-elles signalées par Firebug ?
L'affichage de la valeur de nombre1
montre que celle-ci à
une valeur indéfinie (undefined
) ce qui est différent
d'une variable non définie, comme c'était le cas
de nombre
précédemment. C'est subtil mais différent
malgré tout...
On constate que l'affichage de l'évaluation de la somme des
deux nombres produit une valeur particulière NaN
(pour
"Not a Number"). Ce résultat indique que l'opération
d'addition n'a pu être réalisée car la variable nombre1
n'était
pas liée à une valeur numérique.
Testez ce code avec plusieurs valeurs initiales des variables.
Notion de portée
Les variables, une fois définies, n'existent pour autant pas "partout". Vérifions-le rapidement :
nombre1
et qui en affiche la valeur (afin de
vérifier que la variable est définie). Créez une seconde page qui tente d'afficher la valeur d'une variable
nombre1
mais sans la définir (déclarer) auparavant. Dans votre navigateur chargez la première page puis dans un autre onglet chargez la seconde. Que remarque-t-on ?
La variable nombre1
est bien définie dans la première
page, mais pas dans la seconde. On dit que
la portée de sa définition est limitée
à la page dans laquelle elle est définie. On dit que sa définition
reste locale à la page qui la définit.
La notion de règles de portée sur les variables existe dans tous les langages, même si elles peuvent varier dans leur forme. Nous aurons l'occasion de voir d'autres règles de portée appliquées par Javascript.
Environnement
Sans surprise, comme on a pu le constater dans les différentes
activités précédentes, le résultat d'une expression telle
que nombre1+nombre2
par exemple, dépend de la valeur
des variables nombre1
et nombre2
au moment
où l'expression est évaluée.
De même pour qu'une expression ait une valeur, donc du sens, il faut que les variables qui y apparaissent aient été préalablement définies. L'absence de valeur (non initialisation) d'une variable, même définie, pose également problème.
Il est donc indispensable d'avoir en permanence la connaissance des variables définies et de leurs valeurs afin d'écrire des expressions d'une part qui ont un sens et d'autre part qui ont la valeur attendue. On appelle environnement le contexte dans lequel on réalise une évaluation.
Certaines variables ont une portée locale, la valeur d'un environnement est donc définie localement.