Premiers pas en JavaScript
4.1 Variables numériques
cuy copyleft
  See You Why?  

 


un test sur les variables (3.9) | | variables texte ou string (4.2)

Contenu

 

 

I. Variables numériques

Curieux, on peut déclarer une variable en JavaScript, sans en déterminer le type... en cas de déclaration, non suivie d'une affectation, on dira qu'elle est de type "undefined". Pour l'instant, ce type de variables nous importe peu. On préférera faire connaissance de variables :

De plus, on peut affecter une variable d'une valeur, sans l'avoir déclarée et le type d'une variable peut se modifier au cours de la lecture du programme. Ce n'est pas une raison pour tout ignorer des types de variables qui existent en JavaScript.

En général, en informatique, on admet par exemple les types suivants :

Type Taille borne inférieure borne supérieure ex:
byte/char
short int
int
long int
float
double
bouléen
string (chaine)
caractère sur 1 byte
entier de 2 octets
entier 4 octets
entier de 8 octets
réel de 4 octets (virgule flottante)
réel de 8 octets
V ou F sur 1 octet
autant de bytes que de caractères
0
-32768
-2147483648
-9223372036854775808
-3.4 × 1038
-1.7 × 10308
 
 
255
+32767
2147483647
9223372036854775807
3.4 × 1038
-1.7 × 10308
 
 
 
Type Taille borne inférieure borne supérieure exemple

JavaScript ne différencie pas les types de variables numériques... c'est donc plus facile, mais attention aux erreurs non décelables.
L'avantage est de ne pas devoir préciser le types de boite avec laquelle on travaillera... l'inconvénient, si on ne distingue pas les ingrédients du matériel dans une recette, est qu'on sera incapable de déceler une erreur dans l'instruction : "Vous cassez votre poele" écrite au lieu de "Vous cassez vos œufs dans votre poele"...

Parmi les variables numériques, on abordera les entiers positifs, les nombres décimaux et les nombres négatifs.

 

A. les entiers positifs...

Les quelques exemples que nous avons donnés jusqu'ici faisaient appel à des entiers positifs... et il n'est pas obligatoire de déclarer les variables.

Nous profitons de l'occasion pour préciser :

      1. Une variable est déclarée de façon explicite si l'on fait précéder le nom de la variable par le mot réservé var pour indiquer qu'il s'agira d'une variable.
        Cette déclaration n'est pas obligatoire, mais c'est la façon rigoureuse de déclarer les variables en JavaScript. Il ne restera plus qu'à lui affecter une valeur.
        var MaVariable;
         
      2. Une variable peut aussi être déclarée de façon implicite. Dans ce cas, il suffit d'écrire le nom de la variable suivie du caractère = et de la valeur à affecter : c'est faire une affectation non précédée d'une déclaration. Rappelons que le signe = est le symbole d'affectation en JS, qui devrait se lire "devient égal" ou "prend la valeur de", et que ce signe se note <— en algorithmique. C'est une affectation sans déclaration.
        MaVariable = 23;
         
        Même si une déclaration implicite est tout à fait reconnue par les navigateurs, il est plus rigoureux de déclarer les variables de façon explicite avec le mot var.
         
        À défaut, dans des programmes un peu plus sophistiqués, il pourrait y avoir confusion de valeur des variables et surtout, la portée (ou visibilité) des variables [et donc aussi la mobilisation de la mémoire de l'ordinateur...] sera différente. Il est un peu tôt pour développer cette idée, mais il nous paraissait opportun de le signaler déjà. Nous y reviendrons après l'étude des fonctions, chapitre 11.
         
      3. JS permet de procéder au même moment à une déclaration explicite et à son affectation dans la même ligne de code JS :
        var MaVariable = 23;

Exemple

<html>
<head><title>produit de 2 nombres</title></head>
<body>
<script type="text/javascript">

   //déclaration explicite
   var valeur1;
 
   //affectation
   valeur1 = 4;
 
   //déclaration implicite
   valeur2 = 12;

   //déclaration explicite et affectation
   produit = valeur1 * valeur2;

   //usage
   document.write(produit);
 
</script>
</body>
</html>


Un des usages des variables est de pouvoir attribuer à une variable la valeur d’une autre variable, telle quelle ou modifiée. C'est la cas de la variable produit dans l'exemple ci-dessus : "la variable produit prend la valeur du contenu de la variable valeur1 multipliée par la valeur du contenu de la variable valeur2".

Signifie que la valeur de produit est maintenant celle du produit de valeur1 et valeur2. Notez que cette instruction n’a modifié en rien les valeurs de valeur1 et valeur2 :
une instruction d’affectation ne modifie pas ce qui est à droite du signe d'affectation,
elle ne modifie que ce qui est situé à gauche du signe d’affectation.

Cette règle reste valable si l'on écrit :
compteur = 12;
compteur = compteur + 1;
en effet, on devrait lire : "la variable compteur prend la valeur du contenu de la variable compteur augmentée de 1". L'instruction notée en gras (fausse en math, mais correcte en JS puisque le signe = signifie 'devient égal à') signifie que la nouvelle valeur de compteur est l'ancienne valeur de compteur (12), augmentée de 1.

B. les décimaux positifs

 Un nombre décimal est un nombre écrit avec une virgule et compris entre deux nombres entiers. ” est une approche suffisante en informatique, mais ne l'est certainement pas dans la rigueur mathématique. Nous nous en contenterons ici. 9,95 est un nombre décimal compris entre 9 et 10.

JS va se satisfaire de cette définition, sauf que, comme en anglais, on ne fera pas usage d'une virgule décimale mais d'un point décimal. De plus, même si en typographie correcte, on sépare chaque tranche de 3 chiffres par une espace (rappel, espace est féminin en typographie - voir), parfois remplacée par des points en typographie incorrecte, les nombres décimaux en JS ne peuvent pas comprendre d'espace ni de point autre que le point décimal.

Nous utilisons l'écriture des nombres en base décimale (avec 10 chiffres), l'ordinateur ne travaille qu'en base binaire (avec 2 chiffres 0 et 1). Il ne faut dès lors pas s'étonner de quelques imprécisions dues aux arrondis lors de calcul qui nous paraissent simples en décimal.
Par exemple, sur notre ordinateur, nous avons divisé 5 par 9, puis multiplié le résultat par 6... mentalement, le lecteur aura calculé rapidement 30/9 donc 10/3 donc 3,3333333333, mais le résultat affiché était 3,3333333335... faible erreur, mais erreur quand même.

C. les négatifs

Tout ce qui a été dit au niveau des entiers positifs et des décimaux positifs reste valable pour les négatifs... donc pas de commentaires supplémentaires.

Et pour ceux qui veulent montrer qu'ils en savent plus que le commun des mortels, précisons qu'un nombre en JS est stocké sur 64 bits (ou 8 bytes) dont une mantisse de 53 bits. Cela permet des valeurs entières jusqu'à 9 007 199 254 740 991, à partir duquel on commence à perdre de la précision jusqu'à 2^1024-1 qui est la valeur flottante la plus élevée représentable en JavaScript.

JavaScript réunit en un seul type tous les entiers, petits et grands, les décimaux, et les réels, flottants ou pas.

JavaScript inclut également, en plus des nombres décrits ci-dessus, dans le type number deux valeurs spéciales.
Infinity, un nombre signé, est renvoyé dès que le résultat dépasse la capacité de stockage de number, mais aussi dans des cas limites simples.
Dans les cas indécidables, ou bien lorsqu'une opération qui retourne un nombre ne peut pas le faire, c'est la valeur NaN (Not A Number) qui est renvoyée.
Nous verrons plus en détail les opérateurs arithmétiques, les méthodes de Number et les méthodes de Math pour les cas qui produisent ces deux valeurs au chapitre 12 "Quelques opérateurs mathématiques".

Il nous paraît être trop tôt de vous parler de la portée des variables, et de savoir si elles sont locales ou globales, nous y reviendrons dans le chapitre "11. Variables locales ou globales", ici.

 

D. l'opérateur 'typeof'

JS a créé une fonction qui permet de tester le type de variable qu'on lui passe comme paramètre. La syntaxe en est simple :

typeof ma_variable_a_tester ou typeof(ma_variable_a_tester) qui retourne l'une des valeurs 'number', 'string', 'object', 'boolean', 'function' ou 'undefined'.

 

Exemple

<html>
<head><title>type de variable</title></head>
<body>
<script type="text/javascript">
var i = 1234;
document.write(i + " >> " + typeof i + "<br>"); //retourne number
var somme=123+456;
document.write(somme + " >> " + typeof somme + "<br>"); //retourne number
document.write("<br>");

var titre="Le tutoriel 'premiers pas en JavaScript' du site CUY";
document.write(titre + " >> " + typeof titre + "<br>"); //retourne string
var curieux = "" + somme;
document.write(curieux + " >> " + typeof curieux + "<br>"); //retourne string
document.write("<br>");

var jour = new Date();
document.write(jour + " >> " + typeof jour + "<br>"); //retourne object
document.write("<br>");

var choix = true;
document.write(choix + " >> " + typeof choix + "<br>"); //retourne boolean
var age = 35;
var mineur = (age<21);
document.write(mineur + " >> " + typeof mineur + "<br>"); //retourne boolean
document.write("<br>");

var cas = null;
document.write(cas + " >> " + typeof cas + "<br>"); //retourne object
document.write(parseFloat + " >> " + typeof parseFloat + "<br>"); //retourne function
document.write(Math + " >> " + typeof Math + "<br>"); //retourne object (sur les navigateurs récents)
document.write(Math + " >> " + typeof Math + "<br>"); //retourne function (sur les plus vieux navigateurs)
document.write("<br>");
 
</script>
</body>
</html>

 

 

II. Variables 'string'

voir suite >>>

 

III. Variables logiques ou booléennes

voir suite >>>

 

IV. Variables 'null'

voir suite >>>

 

V. Variables tableau ou 'array'

voir suite >>>

 

VIII. Exercices sur les types de variables

voir suite >>>

 

IX. Test relatif aux types de variables

voir suite >>>


un test sur les variables (3.9) | | variables texte ou string (4.2)