Intégrer
<script src="script.js"
defer></script>Dans le <head> avec defer, ou en fin de
<body>. Sinon le DOM n'existe pas encore.
Console : F12 · console.log(), .error(),
.table()
Recto-verso. À relire la veille. Le cours · Les exercices
<script src="script.js"
defer></script>Dans le <head> avec defer, ou en fin de
<body>. Sinon le DOM n'existe pas encore.
Console : F12 · console.log(), .error(),
.table()
const | par défaut |
let | si ça change |
var | jamais |
Types : number, string, boolean,
undefined, null, array, object.
typeof x donne le type.
===5 == "5" // true ✘
5 === "5" // false ✔
0 == "" // true ✘== convertit avant de comparer. === compare
valeur + type.
+2 + 3 // 5
"2" + 3 // "23" ✘
Number("2")+3 // 5 ✔.value et prompt() rendent toujours du texte.
Convertir avant de calculer.
Calcul : + - * / % **
Comparaison : === !== >
< >= <=
Logique : && (et) · || (ou) ·
! (non)
Template literal : `J'ai ${age} ans`
if (a < b) {
} else if (a === b) {
} else {
}
switch (x) {
case 1: … break;
default: …
}Sans break, le switch « tombe » dans les cas suivants.
for (let i=0; i<n; i++) { }
while (cond) { }
do { } while (cond);do…while tourne au moins une fois. Toute boucle doit faire
évoluer sa condition.
function f(a, b) { return a+b; }
const g = function(a){ … };
const h = (a, b) => a - b;
function s(nom = "Invité") { }Déclarée = hoistée (appelable avant). Après return, la fonction
s'arrête.
getElementById() | par id |
querySelector() | 1er, sélecteur CSS |
querySelectorAll() | tous |
.textContent | texte — sûr |
.innerHTML | HTML — risque XSS |
.style.backgroundColor | camelCase ! |
.classList.add/remove/toggle | à privilégier |
createElement + appendChild | créer |
el.addEventListener("click", fn);
// fn SANS parenthèses !click · dblclick · mouseover/mouseout ·
keydown/keyup · submit · change
form.addEventListener("submit",
function (e) {
e.preventDefault(); // ← clé
…
});.value · .checked · .trim() ·
.length
Email : /^[^\s@]+@[^\s@]+\.[^\s@]+$/
Le client = confort. La sécurité est côté serveur.