Séance 4 — JavaScript : les variables
Stocker une valeur, et s’en servir
- Brancher un fichier JavaScript sur une page
- Créer une variable et afficher sa valeur
- Distinguer les 3 types de base : texte, nombre, booléen
1. Le troisième langage
Vous connaissez maintenant deux langages. En voici un troisième.
| Langage | Rôle | Question |
|---|---|---|
| HTML | Le contenu | Quoi ? |
| CSS | L’apparence | Comment ça a l’air ? |
| JavaScript | Le comportement | Que se passe-t-il quand… ? |
Le JavaScript, c’est ce qui rend une page capable de faire des choses : compter, vérifier, réagir à un clic, aller chercher des informations.
Ce sont deux langages complètement différents. Le nom est un coup marketing des années 90. On dit souvent « JS » pour aller plus vite.
2. Brancher le JavaScript
Étape 1 — Deux fichiers
Dans web101, créez seance04.html :
seance04.html
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8" />
<title>Séance 4</title>
</head>
<body>
<h1>Ma première ligne de JavaScript</h1>
<script src="app.js"></script>
</body>
</html>Et app.js :
app.js
console.log("Bonjour depuis JavaScript !");Lancez Live Server.
La page n’affiche rien de nouveau. C’est normal. Le message est allé dans la console.
<script>
- Elle se place juste avant
</body>, tout en bas. Pourquoi ? Parce que le navigateur lit la page de haut en bas : quand il arrive au script, la page existe déjà et le code peut travailler dessus. - Elle ne s’auto-ferme pas. On écrit
<script src="app.js"></script>, avec les deux balises collées.<script src="app.js" />ne fonctionne pas.
3. La console : votre nouvel écran
Étape 2 — Ouvrir la console
Dans le navigateur : clic droit → Inspecter, puis onglet Console. (Raccourci : F12.)
Vous devez y voir Bonjour depuis JavaScript !.
Gardez-la ouverte en permanence pendant tout le reste du semestre.
- Les messages de
console.log(…)s’y affichent - Les erreurs de votre code s’y affichent en rouge
Une erreur JavaScript ne se voit pas sur la page : la page a juste l’air « cassée » ou ne réagit pas. Si vous ne regardez pas la console, vous cherchez dans le noir.
4. Les variables
Une variable, c’est une boîte étiquetée qui contient une valeur.
app.js
let prenom = "Camille";
console.log(prenom);let prenom = "Camille" ;
└┬┘ └─┬──┘ │ └──┬──┘
│ │ │ └── la VALEUR mise dans la boîte
│ │ └─────────── « reçoit » (ce n'est PAS « égal » au sens maths)
│ └──────────────── le NOM de la boîte
└─────────────────────── « je crée une nouvelle boîte »
= ne veut pas dire « égal »
En mathématiques, x = 3 est une affirmation. En programmation, x = 3 est un ordre : « mets 3 dans la boîte x ».
C’est pour ça que cette ligne, absurde en maths, est parfaitement normale en programmation :
let compteur = 0;
compteur = compteur + 1; // prends la valeur de compteur, ajoute 1, remets-la dedanslet ou const ?
let age = 19;
age = 20; // ✅ autorisé : let = ça peut changer
const nom = "Camille";
nom = "Alex"; // ❌ ERREUR : const = ça ne change jamaisUtilisez const par défaut. Ne passez à let que si vous savez que la valeur va changer.
Pourquoi ? Parce que const protège des erreurs : si vous modifiez par accident une valeur qui ne devait pas bouger, le navigateur vous prévient tout de suite au lieu de laisser un bug s’installer.
- Pas d’espace, pas d’accent :
prenomEtudiant, pasprénom étudiant - On commence par une minuscule
- Plusieurs mots ? On colle avec une majuscule au milieu :
nombreDePoints. Ça s’appelle le camelCase (comme les bosses d’un chameau). - Un nom qui dit ce que ça contient.
xne dit rien,nombreDeClicsdit tout.
Exercice 4.1
Dans app.js, créez trois variables : votre prénom, votre ville, votre âge. Affichez les trois dans la console.
app.js
const prenom = "Camille";
const ville = "Palaiseau";
const age = 19;
console.log(prenom);
console.log(ville);
console.log(age);const partout, car rien ne change dans ce programme.
5. Les trois types de base
Une valeur a toujours un type. Il y en a trois à connaître.
const prenom = "Camille";
const cri = "Aïe !";
const vide = "";Toujours entre guillemets. On peut utiliser "…" ou '…', au choix, mais il faut ouvrir et fermer avec le même.
const age = 19;
const prix = 12.5;
const temperature = -4;Pas de guillemets. Le séparateur décimal est le point, pas la virgule : 12.5, jamais 12,5.
const majeur = true;
const pleut = false;Seulement deux valeurs possibles : true ou false. En minuscules, et sans guillemets.
Vérifier un type
console.log(typeof "Camille"); // string
console.log(typeof 19); // number
console.log(typeof true); // boolean19 et "19" ne sont PAS la même chose
const a = 19; // un nombre, avec lequel on peut calculer
const b = "19"; // du texte, qui se trouve ressembler à un nombreC’est la source d’erreur numéro 1 des débutants. On y revient tout de suite.
6. Calculer et assembler
Avec des nombres
const a = 10;
const b = 3;
console.log(a + b); // 13
console.log(a - b); // 7
console.log(a * b); // 30
console.log(a / b); // 3.3333333333333335
console.log(a % b); // 1 ← le RESTE de la division% (le modulo) ?
Il donne le reste d’une division entière. C’est très pratique :
console.log(10 % 2); // 0 → 10 est pair
console.log(7 % 2); // 1 → 7 est impairn % 2 === 0 est la façon standard de tester si un nombre est pair.
Avec du texte
const prenom = "Camille";
const nom = "Dupont";
console.log(prenom + " " + nom); // Camille DupontLe + entre deux textes les colle (on dit concaténer). Attention à ne pas oublier l’espace : prenom + nom donnerait CamilleDupont.
La bonne méthode : les gabarits
Coller des morceaux avec des + devient vite illisible. Il existe bien mieux :
const prenom = "Camille";
const age = 19;
console.log(`${prenom} a ${age} ans.`); // Camille a 19 ans.- On utilise des accents graves
`, pas des apostrophes'.
Windows touche AltGr+7, puis Espace
macOS touche Option+7… ou copiez-collez ! - À l’intérieur, une variable s’écrit
${variable}— dollar, accolades.
C’est beaucoup plus lisible :
"Bonjour " + prenom + ", tu as " + age + " ans" // 😖
`Bonjour ${prenom}, tu as ${age} ans` // 😀7. Le piège du +
console.log(5 + 3); // 8 ← deux nombres : addition
console.log("5" + "3"); // "53" ← deux textes : collage
console.log("5" + 3); // "53" ← 😱 un texte et un nombre : COLLAGESi l’un des deux est du texte, + colle au lieu d’additionner.
C’est exactement ce qui arrive quand on récupère une valeur tapée par l’utilisateur : elle arrive toujours sous forme de texte. On verra comment la convertir à la séance 10.
Convertir
const texte = "42";
const nombre = Number(texte);
console.log(nombre + 1); // 43 ✅
console.log(Number("bonjour")); // NaNNaN signifie Not a Number : « je n’ai pas réussi à en faire un nombre ». Quand vous voyez NaN dans la console, cherchez une conversion ratée.
Exercice 4.2 — Prédire
Sans exécuter, qu’affiche chaque ligne ?
console.log(2 + 2);
console.log("2" + 2);
console.log(2 + 2 + "2");
console.log("2" + 2 + 2);
console.log(typeof (1 + 1));| Ligne | Résultat | Pourquoi |
|---|---|---|
2 + 2 |
4 |
Deux nombres → addition |
"2" + 2 |
"22" |
Un texte est présent → collage |
2 + 2 + "2" |
"42" |
JS lit de gauche à droite : 2+2 = 4, puis 4 + "2" colle → "42" |
"2" + 2 + 2 |
"222" |
"2"+2 = "22", puis "22"+2 = "222" |
typeof (1 + 1) |
"number" |
Le résultat est 2, donc un nombre |
La leçon : l’ordre compte, parce que JavaScript évalue de gauche à droite.
8. À toi de jouer
Exercice 4.3 — Se présenter
Écrivez un programme qui contient 3 variables (prenom, age, ville) et affiche une seule ligne, avec un gabarit :
Je m'appelle Camille, j'ai 19 ans et j'habite à Palaiseau.
app.js
const prenom = "Camille";
const age = 19;
const ville = "Palaiseau";
console.log(`Je m'appelle ${prenom}, j'ai ${age} ans et j'habite à ${ville}.`);Astuce : comme on utilise des accents graves `, l’apostrophe de m'appelle ne pose aucun problème.
Exercice 4.4 — Le prix du panier
Une baguette coûte 1,20 €, un croissant 1,10 €. Une personne achète 2 baguettes et 3 croissants.
Écrivez un programme qui calcule et affiche :
Total : 6.7 euros
Le prix des articles et les quantités doivent être dans des variables (pas de nombre écrit en dur dans le calcul).
app.js
const prixBaguette = 1.2;
const prixCroissant = 1.1;
const nbBaguettes = 2;
const nbCroissants = 3;
const total = prixBaguette * nbBaguettes + prixCroissant * nbCroissants;
console.log(`Total : ${total} euros`);⚠️ 1.2 avec un point. 1,2 serait interprété comme deux valeurs séparées.
Vous obtenez peut-être 6.699999999999999 : les ordinateurs calculent les décimaux de façon approchée. On peut arrondir :
console.log(`Total : ${total.toFixed(2)} euros`); // Total : 6.70 eurosExercice 4.5 — L’échange
Deux variables contiennent deux valeurs :
let a = "pomme";
let b = "orange";Écrivez le code qui échange leurs contenus, pour qu’à la fin a contienne "orange" et b contienne "pomme".
a = b; b = a; ne marche pas. Essayez sur papier, en dessinant les deux boîtes, et vous verrez pourquoi. Il vous faut une troisième boîte.
app.js
let a = "pomme";
let b = "orange";
const temporaire = a; // on met "pomme" de côté
a = b; // a reçoit "orange"
b = temporaire; // b reçoit "pomme"
console.log(a); // orange
console.log(b); // pommePourquoi a = b; b = a; échoue : après a = b, la valeur "pomme" est écrasée, perdue à jamais. b = a recopie alors "orange" sur "orange". Les deux variables valent "orange".
C’est exactement le problème des deux verres qu’on veut échanger : il faut un troisième verre.
Notez aussi qu’ici on utilise let (les valeurs changent) sauf pour temporaire, qui ne change jamais → const.
Exercice 4.6 — Trouver les 3 erreurs
const prenom = Camille;
const age = "19";
console.log("Bonjour ${prenom}, dans 1 an tu auras " + age + 1 + " ans");Ce programme est censé afficher Bonjour Camille, dans 1 an tu auras 20 ans. Trouvez les 3 problèmes et corrigez.
Camillesans guillemets : JavaScript croit que c’est le nom d’une variable, qui n’existe pas → erreur rouge dans la console.age = "19"est du texte. Doncage + 1donne"191"et non20."${prenom}"avec des guillemets droits :${…}ne fonctionne que dans un gabarit, entre accents graves. Ici, ça afficherait littéralement${prenom}.
app.js
const prenom = "Camille";
const age = 19;
console.log(`Bonjour ${prenom}, dans 1 an tu auras ${age + 1} ans`);Remarquez qu’on peut mettre un calcul dans ${…}, pas seulement une variable.
9. Fiche mémo
Brancher le JS (tout en bas du <body>)
<script src="app.js"></script>Créer une variable
const nom = "Camille"; // ne changera pas → const par défaut
let compteur = 0; // va changer → letLes 3 types
"du texte" // string ← guillemets
42 // number ← pas de guillemets, point décimal
true // boolean ← true ou false uniquementAssembler du texte
`Bonjour ${prenom}, tu as ${age} ans`Accents graves ` + ${variable}
Voir ce qui se passe
console.log(uneVariable);
console.log(typeof uneVariable);Console = F12 → onglet Console. Toujours ouverte.
Le piège
"5" + 3 donne "53", pas 8. Conversion : Number("5") → 5