Aller au contenu
M05 · B. Acquérir les fondamentaux de JavaScript

Variables et types de données

Déclarer des variables avec let et const, connaître les types primitifs (nombre, chaîne, booléen, undefined, null) et les objets de base, et vérifier un type avec typeof.

1Situer

Une petite épicerie de Meknès veut une page qui calcule le prix d'un panier : le nom du produit, son prix, la quantité, s'il est en promotion. Chaque information doit être rangée quelque part dans le programme, avec un nom, pour pouvoir la réutiliser et la modifier : c'est le rôle des variables.

2Comprendre

Une variable : une étiquette et une valeur
let quantite = 2; quantite = 3; const TVA = 0.2; TVA = 0.1; ✖ typeof quantite quantite (let) 2 TVA (const) 🔒 0.2 TypeError: Assignment to constant variable. 'Huile' → string 3 → number true → boolean let x; → undefined (pas encore de valeur)

let quantite = 2 : une boîte étiquetée quantite reçoit la valeur 2.

1 / 5

Déclarer une variable

let quantite = 2;        // une variable qui peut changer
const prix = 65;         // une constante
let remise;              // déclarée sans valeur : undefined
  • const par défaut, let si la valeur doit changer.
  • var est l’ancienne syntaxe : elle a des comportements surprenants, on l’évite.
  • Noms en camelCase : prixUnitaire, nbArticles. Pas de chiffre au début, pas de tiret, pas de mot réservé.

Les types primitifs

TypeExemplestypeof
nombre12, 3.5, -4"number"
chaîne'Fès', "Fès", `Fès`"string"
booléentrue, false"boolean"
indéfiniundefined"undefined"
videnull"object" (une bizarrerie historique)

JavaScript est dynamiquement typé : une variable n’a pas de type fixe, c’est la valeur qui en a un.

Les objets de base

En plus des primitifs, JavaScript fournit des objets prêts à l’emploi, vus à la leçon B.6 et suivantes : les tableaux (['thé', 'sucre']), les objets ({ nom: 'Thé', prix: 18 }), Date, Math, les expressions régulières, JSON.

Conversions

Number('12')      // 12
String(12)        // "12"
parseInt('12 DH') // 12
parseFloat('3.5') // 3.5
Number('abc')     // NaN (Not a Number)

Attention : avec +, si l’un des deux est une chaîne, JavaScript colle les textes : '5' + 3 donne "53".

Exemple simple

Les bocaux étiquetés de l'épicier

Chaque bocal a une étiquette (le nom de la variable) et un contenu (la valeur). Avec let, on peut vider le bocal et le remplir autrement. Avec const, le bocal est scellé : sa valeur ne change plus.

let quantite = 2;      // peut changer
quantite = 3;          // ok
const TVA = 0.2;       // ne change pas
TVA = 0.1;             // TypeError : Assignment to constant variable
Exemple simple

Le type, c'est la nature du contenu

Dans un bocal on met des olives, dans un autre de l'huile. En JavaScript, une valeur est un nombre, un texte (chaîne), un vrai/faux (booléen)... typeof dit ce qu'il y a dedans.

typeof 12        // "number"
typeof 'olives'  // "string"
typeof true      // "boolean"

3Manipuler

Le script range les informations d'un produit dans des variables. Complétez-le en suivant les consignes ; regardez la console et la page.
Ouvrir dans le lab ↗
Console
  • Mettez la quantité à 3 (quantite = 3) : la page affiche 3
  • Affichez dans la console le type d'une constante enPromo qui vaut true (boolean)
  • Déclarez une variable total qui vaut prix * quantite et affichez-la dans la console (195)
  • Affichez dans la console typeof d'une variable déclarée sans valeur (undefined)

4Pratiquer

Exercice 1 · let ou const ?

Pour chaque donnée de l'épicerie, choisissez let ou const : (1) le nom de l'épicerie ; (2) le nombre d'articles dans le panier ; (3) le taux de TVA ; (4) le total du panier.

Voir le corrigé
const nomEpicerie = 'Épicerie Zitoun';  // ne change pas
let nbArticles = 0;                     // change à chaque ajout
const TVA = 0.2;                        // fixe
let total = 0;                          // recalculé

Exercice 2 · Les noms de variables

Lesquels de ces noms sont valides ? prixUnitaire, 2prix, prix-total, prix_total, let, $panier

Voir le corrigé
valides : prixUnitaire (camelCase, conseillé), prix_total, $panier
invalides : 2prix (commence par un chiffre), prix-total (le - est une soustraction),
            let (mot réservé)

Exercice 3 · Le piège des chaînes

Que vaut '5' + 3 ? Et '5' * 3 ? Expliquez.

Voir le corrigé
'5' + 3   // "53" : avec une chaîne, + colle les textes (concaténation)
'5' * 3   // 15   : * n'existe que pour les nombres, '5' est converti
Number('5') + 3  // 8 : on convertit d'abord explicitement

5Vérifier

1. Quelle est la différence entre let et const ?
2. Que renvoie typeof 'Fès' ?
3. Quelle est la valeur d'une variable déclarée sans valeur (let x;) ?