d) Conseils d'écriture
--------------------------------------------------------------------------------
Le JavaScript ne fait pas attention aux sauts de ligne ni aux espaces. Abusez-en ! Cela coûte presque rien (en octet) et c'est tellement plus clair pour la lecture.
Voici quelques exemples qui ne vous disent rien pour l'instant mais qui vous montrent comment on peut écrire un code lisible :
--------------------------------------------------------------------------------
var a = "Toto"; // Bien. Clair, lisible et tout et tout...
var b="Titi"; // Pas bien. Pas clair, illisible (enfin...)
if(a == "Toto") { // Bien. Clair, lisible et tout et tout...
Mon code JavaScript...
}
if(a=="Toto"){ // Pas bien. Pas clair, illisible (enfin...)
Mon code JavaScript...
}
--------------------------------------------------------------------------------
Ensuite, c'est une question de goût. A vous de trouver votre style d'écriture qui vous plaît le plus.
e) Indentation
--------------------------------------------------------------------------------
Qu'est ce que l'indentation ? Indenter un code est le fait de déclaler les différents blocs qui composent le script. Nous verrons par la suite qu'un script est une suite d'instructions rangées dans un ordre précis et quelques fois dans des blocs d'instructions. Pour définir un bloc d'instructions, il faut définir le début et la fin du bloc. Tout ce qui se trouvera dedans sera une suite d'instructions définie dans un bloc...
Pour décaler ces blocs, chacun a sa méthode, soit la Tabulation ([Tab]), sois l'espace ([Espace]), à vous de choisir votre méthode. Vous pouvez aussi choisir de ne pas intenter votre code, mais là, c'est un risque à prendre pour la relecture quasi-impossible si le script est assez compliqué.
Voici un exemple d'indentation :
--------------------------------------------------------------------------------
function toto() { // Début du bloc 1
if(a == "") { // Début du bloc 2
Code JavaScript.... // Bloc 2 dans Bloc 1
Code JavaScript.... // Bloc 2 dans Bloc 1
Code JavaScript.... // Bloc 2 dans Bloc 1
if(b == "") { // Début du bloc 3
Code JavaScript.... // Bloc 3 dans Bloc 2 et dans Bloc 1
Code JavaScript.... // Bloc 3 dans Bloc 2 et dans Bloc 1
Code JavaScript.... // Bloc 3 dans Bloc 2 et dans Bloc 1
for(i = 0; i < 10; i++) { // Début du bloc 4
Code JavaScript... // Bloc 4 dans Bloc 3, dans Bloc 2 et dans Bloc 1
Code JavaScript... // Bloc 4 dans Bloc 3, dans Bloc 2 et dans Bloc 1
Code JavaScript... // Bloc 4 dans Bloc 3, dans Bloc 2 et dans Bloc 1
} // Fin du bloc 4
} // Fin du bloc 3
} // Fin du bloc 2
} // Fin du bloc 1
--------------------------------------------------------------------------------
Voici la même chose sans l'indentation :
--------------------------------------------------------------------------------
if(a == "") { // Début du bloc 2
Code JavaScript.... // Bloc 2 dans Bloc 1
Code JavaScript.... // Bloc 2 dans Bloc 1
Code JavaScript.... // Bloc 2 dans Bloc 1
if(b == "") { // Début du bloc 3
Code JavaScript.... // Bloc 3 dans Bloc 2 et dans Bloc 1
Code JavaScript.... // Bloc 3 dans Bloc 2 et dans Bloc 1
Code JavaScript.... // Bloc 3 dans Bloc 2 et dans Bloc 1
for(i = 0; i < 10; i++) { // Début du bloc 4
Code JavaScript... // Bloc 4 dans Bloc 3, dans Bloc 2 et dans Bloc 1
Code JavaScript... // Bloc 4 dans Bloc 3, dans Bloc 2 et dans Bloc 1
Code JavaScript... // Bloc 4 dans Bloc 3, dans Bloc 2 et dans Bloc 1
} // Fin du bloc 4
} // Fin du bloc 3
} // Fin du bloc 2
} // Fin du bloc 1
--------------------------------------------------------------------------------
Vous devez tout de suite comprendre qu'il faut indenter le code !
f) Sauts de ligne
--------------------------------------------------------------------------------
Les sauts de ligne n'ont pas d'importance en JavaScript, faire ceci est tout à fait autoriser :
--------------------------------------------------------------------------------
var ma_variable =
"ma valeur";
--------------------------------------------------------------------------------
Par contre, vous ne pouvez pas faire un saut de ligne en JavaScript dans une chaîne, comme en
, ceci est faux :
--------------------------------------------------------------------------------
var ma_variable = "ma
valeur";
--------------------------------------------------------------------------------
Si vous voulez faire un saut de ligne dans une chaîne, vous devez soit utiliser "\n" soit "<br>" selon ce que vous voulez faire.
...........................................................................................................
Les variables
a) Qu'est ce que c'est ?
--------------------------------------------------------------------------------
Une variable est un emplacement mémoire qui contient des données, comme un livre contient du texte ou comme une boîte de conserve contient des haricots verts...
Il existe différents types de variables, nous les verrons pas la suite dans ce chapitre.
b) Pourquoi ces différences ?
--------------------------------------------------------------------------------
Contrairement au Java, JavaScript n'est pas un langage fortement typé (faire la vraie différence entre les types de variables), mais ceci n'empêche pas que JavaScript n'avance pas à l'aveuglette quand on lui donne deux variables.
Mais dommage, l'opérateur d'addition et l'opérateur de concaténation (mot savant que nous définiront au chapitre
soit le même, mais bon, tant pis !
Alors comment savoir si JavaScript va transformer 1 + 1 en 2 ou en 11 ?
C'est pour cela que l'on a recours à différents types de variables, on va étudier en premier temps, les variables dites "scalaires", c'est à dire des variables qui contiennent juste une (1) donnée, aussi grosse soit-elle...
c) Convention
--------------------------------------------------------------------------------
Une variable est définie par le mot clé var, avec la syntaxe :
--------------------------------------------------------------------------------
var nom_variable = valeur_variable;
--------------------------------------------------------------------------------
Une variable ne doit pas voir le même nom qu'un mot réservé JavaScript.
Aucun espace dans les noms de variables, pour "simuler" un espace, utilisez l'underscore ( _ ).
Tous les caractères alphanumériques, l'underscore ( _ ) et le dollar ( $ ) ( à partir de la version 1.1 ) sont admis.
Une variable ne doit pas commencer par un chiffre.
Les variables sont sensibles à la casse ! Ainsi, la variable "maison" n'est pas la même que la variable "MaiSon" !.
d) Le type "String" ou "Chaîne"
--------------------------------------------------------------------------------
Une chaîne ?
Une chaîne est l'ensemble des caractères qui la compose. On peut y mettre tous les caractères que l'on veut dedans, des alphanumériques (alphabétiques + numériques), des caractères spéciaux ( & # { [ | \ @ ] } = + - * ...) et des "séquences d'échappement"...
Une chaîne est une ligne de caractères dits "isolés", des caractères mis bout à bout pour former des mots, des phrases...
Une chaîne doit commencer par des guillemets (ou par des apostrophes) et se finir par des guillemets si on a commencé par des guillemets et des apostrophes si on a commencé par des apostrophes.
Mais que ce passe-t-il si on veut utiliser la chaîne :
...................................................................................................
Et il m'a dit : "bonjour !"
--------------------------------------------------------------------------------
Le code serait donc :
--------------------------------------------------------------------------------
var ma_variable1 = "Et il m'a dit : "bonjour !""; // Avec des guillemets
var ma_variable2 = 'Et il m'a dit : "bonjour !"'; // Avec des apostrophes
--------------------------------------------------------------------------------
Dans les deux cas, les variables "ma_variable1" et "ma_variable2" sont les mêmes, la première commence et finie par un guillemet ( " ) et la seconde commence et finie par une apostrophe ( ' ).
Tout va bien, alors non ? Mais si on a l'oeil (et le bon...), on peut voir que la valeur de "ma_variable1" est "Et il m'a dit : " avec un espace au bout, et que la valeur de "ma_variable2" est "Et il m" sans espace.
Pourquoi ? C'est logique, la variable "ma_variable1" commence et se finit par un guillemet, la chaîne se finit par le deuxième guillemet rencontré (le premier sert à ouvrir), mais dans cette chaîne, il y en a trois !
C'est la même chose pour la variable "ma_variable2", sauf que le problème vient des apostrophes !
Heureusement, il existe une méthode pour éviter ce problème, c'est le caractère d'échappement. L'anti-slash (backslash, barre inversée, le nom c'est à vous de choisir...) est utilisé pour cet effet. Il se place juste devant le caractère et dit à la machine : "ce qui suit, tu ne t'en occupes pas !", en fait , elle lui envoie des 0 et des 1, mais bon, restons simple et humain !
Voici donc les deux chaînes correctes :
--------------------------------------------------------------------------------
var ma_variable1 = "Et il m\'a dit : \"bonjour !\""; // Avec des guillemets
var ma_variable2 = 'Et il m\'a dit : \"bonjour !\"'; // Avec des apostrophes
--------------------------------------------------------------------------------
Il existe des caractères d'échappement prédéfinis qui nous rendent la vie un peu plus rose, exemple, pour dire à la machine de sauter une ligne ([Entrée]), le tag <br> sert pour l'HTML, mais le JavaScript peut accéder à plus de chose que le simple document HTML, comme une boîte de dialogue, où le code HTML ne sert à rien !
Les codes qui suivent ne servent pas seulement au JavaScript, ce sont les codes "internationaux", ils marchent pour tous les langages :
\n Nouvelle ligne
\r Retour chariot
\t Tabulation
\" Guillemet
\' Apostrophe
\\ Anti-slash
...........................................................................................................
Donc si vous voulez faire une arboressence sous MS-DOS, vous mettrez :
--------------------------------------------------------------------------------
C:\\mon_repertoire\\mon_sous_repertoire\\mon_fichier.txt
--------------------------------------------------------------------------------
Les simples anti-slashs ont été remplacés par des doubles, le premier étant le caractère d'échappement.
Récapitulons :
Une chaîne doit commencer soit par des guillemets, soit par des apostrophes et doit se finir par des guillemets, si on a commencé par des guillemets ou par des apostrophes si on a commencé par des apostrophes !
Si vous utilisez les caractères suivants : " ' [ ] { } \..., vous devez mettre un anti-slash devant ( \ ) !
e) Le type "Number" ou "Numérique"
--------------------------------------------------------------------------------
Dans les langages fortement typés, il existe différents types numériques, en Pascal ou en Java, il existe une différence entre 1 et 1.1 ! Le premier est un nombre entier (integer), le second est ce que l'on appelle un nombre à virgule flottante (float number).
Il existe un autre type de nombre, les nombres avec exposant, 88 s'écrit sous la forme "x^y" où "y" est l'exposant de "x". La forme dite expodentionnelle concerne les nombres en puissance de 10 ( x.10y ), écrit sous la forme xey où "y" est un entier positif ou négatif.
Ainsi 2000 peut s'écrire 2000.000, 44.72135955^2 ou 2e+3 ...
Et -2000 peut s'écrire -2e3 et 0.002 peut s'écrire 2e-3...
Il existe aussi les nombres sous la forme hexadécimale, octale, mais ceci ne nous intéresse pas !
Vous pouvez utiliser des valeurs infiniment grandes (10308) et des valeurs infiniment petites (10-324). Le type numérique s'écrit donc sous la forme :
--------------------------------------------------------------------------------
var mon_nombre1 = 8;
var mon_nombre2 = 8.8;
var mon_nombre3 = 8^8; // 8 puissance 8 = 16777216
var mon_nombre4 = 8e+2; // 8 multiplié par 10 puissance 2 = 800
--------------------------------------------------------------------------------
f) Le type "Boolean" ou "Booléen"
--------------------------------------------------------------------------------
Le type booléen admet que deux valeurs, la valeur true (vrai) et la valeur false (faux), tout ce qui n'est pas vrai est faux et tout ce qui n'est pas faux est vrai en logique binaire. A retenir :
false n'est pas égal à 0 comme en
par exemple.
true n'est pas égal à 1 comme en
par exemple.
Un test logique ( Chapitre 9 ) seulement sur une variable revient à tester si la variable est vraie (contient la valeur booléenne true), ainsi si (toto) revient à faire si (toto égal vrai).
Un test logique avec un opérateur de comparaison ( Chapitre 8 ) revient à tester quelle valeur bouléenne renvoie le test.
true et false sont sensibles à la casse, n'écrivez pas TRUE, ni True, ni FALSE, ni False mais bel et bien true et false !
Vous pouvez vous demander à quoi cela sert, vous le comprendrez très vite !