18
Cheatsheets JavaScript
Référence complète et interactive
Guide de référence complet des méthodes et syntaxes JavaScript les plus utilisées, organisé par catégorie avec recherche intégrée.
🔄 Transformation & Itération
| Méthode | Description | Retour | Mutate? |
|---|---|---|---|
map(fn) |
Transforme chaque élément via une fonction | New Array | Non |
filter(fn) |
Garde les éléments qui valident la condition | New Array | Non |
reduce(fn, init) |
Réduit le tableau à une seule valeur | Any | Non |
forEach(fn) |
Exécute une fonction pour chaque élément | undefined |
Non |
flat(depth) |
Aplanit les sous-tableaux | New Array | Non |
flatMap(fn) |
Combinaison de map() et flat(1) | New Array | Non |
🔍 Recherche & Tri
| Méthode | Description | Retour | Mutate? |
|---|---|---|---|
find(fn) |
Premier élément qui valide la condition | Element / undefined | Non |
findIndex(fn) |
Index du premier élément trouvé | Number (-1 si absent) | Non |
includes(val) |
Vérifie si la valeur existe | Boolean | Non |
some(fn) |
Si au moins UN élément valide | Boolean | Non |
every(fn) |
Si TOUS les éléments valident | Boolean | Non |
sort(fn) |
Trie les éléments (convertit en string par défaut) | Reference | Oui |
toSorted(fn) |
Version non-mutante de sort() (ES2023) | New Array | Non |
✏️ Modification (Ajout/Retrait)
| Méthode | Description | Retour | Mutate? |
|---|---|---|---|
push(...el) |
Ajoute à la fin | Nouvelle length | Oui |
pop() |
Retire le dernier | Élément retiré | Oui |
unshift(...el) |
Ajoute au début | Nouvelle length | Oui |
shift() |
Retire le premier | Élément retiré | Oui |
splice(start, n, ...add) |
Modifie le contenu (retire/ajoute) | Tableau des supprimés | Oui |
slice(start, end) |
Extrait une portion (copie) | New Array | Non |
🔍 Recherche
str.includes("text"): Contient ?str.startsWith("abc"): Commence par ?str.endsWith("xyz"): Finit par ?str.indexOf("text"): Position (ou -1)
✂️ Extraction
str.slice(0, 5): Prend de 0 à 5str.substring(0, 5): Similaire slicestr.split(","): Découpe en Arraystr.charAt(0): Caractère à index
✨ Transformation
str.trim(): Retire espaces tourstr.toUpperCase(): MAJUSCULEstr.toLowerCase(): minusculestr.replace("a", "b"): Remplace 1er
📝 Méthodes de String
| Méthode | Description | Exemple |
|---|---|---|
replace(regex/str, new) |
Remplace la première occurrence | "a-b".replace("-", ":") → "a:b" |
replaceAll(str, new) |
Remplace TOUTES les occurrences | "a-b-c".replaceAll("-", ":") → "a:b:c" |
padStart(len, char) |
Ajoute des caractères au début | "5".padStart(2, "0") → "05" |
padEnd(len, char) |
Ajoute des caractères à la fin | "5".padEnd(2, "0") → "50" |
repeat(count) |
Répète la chaîne | "ha".repeat(3) → "hahaha" |
concat(...str) |
Assemble des chaînes | "a".concat("b") → "ab" |
at(index) |
Caractère à position (accepte négatif) | "abc".at(-1) → "c" |
📦 Manipulation d'Objets
| Méthode | Description | Retour |
|---|---|---|
Object.keys(obj) |
Liste des clés énumérables | Array of Strings |
Object.values(obj) |
Liste des valeurs | Array of Values |
Object.entries(obj) |
Paires [clé, valeur] | Array of Arrays |
Object.fromEntries(arr) |
Inverse de entries() | Object |
Object.assign(t, ...s) |
Copie les propriétés de source vers cible | Target Object |
Object.freeze(obj) |
Rend l'objet immuable (lecture seule) | Frozen Object |
Object.seal(obj) |
Empêche ajout/suppression (modif possible) | Sealed Object |
obj.hasOwnProperty(key) |
Vérifie si la propriété est directe | Boolean |
🔓 Destructuring
const user = { name: "Alice", age: 25 };
// Extraction
const { name, age } = user;
// Renommage
const { name: nom } = user;
// Valeur par défaut
const { role = "guest" } = user;
✨ Spread Operator
const a = { x: 1, y: 2 };
// Clone (shallow)
const b = { ...a };
// Merge
const c = { ...a, z: 3 };
// Override
const d = { ...a, x: 99 };
🎯 Sélection & Contenu
| Méthode / Propriété | Description | Exemple |
|---|---|---|
querySelector(sel) |
Premier élément correspondant | document.querySelector('.btn') |
querySelectorAll(sel) |
Tous les éléments (NodeList) | document.querySelectorAll('li') |
getElementById(id) |
Sélection par ID (rapide) | document.getElementById('app') |
textContent |
Texte pur (sans HTML) | el.textContent = 'Hello' |
innerHTML |
Contenu HTML (Attention XSS) | el.innerHTML = '<span>A</span>' |
value |
Valeur d'un input/textarea | input.value |
🎨 Classes & Styles
| Méthode | Description |
|---|---|
classList.add(cls) |
Ajoute une classe |
classList.remove(cls) |
Retire une classe |
classList.toggle(cls) |
Ajoute si absente, retire si présente |
classList.contains(cls) |
Vérifie la présence (true/false) |
style.property |
Style inline (camelCase) |
getAttribute(attr) |
Lire un attribut HTML |
setAttribute(attr, val) |
Définir un attribut |
🌳 Arbre DOM (Création & Navigation)
| Méthode | Description |
|---|---|
createElement(tag) |
Crée un nouvel élément (en mémoire) |
append(node/str) |
Ajoute à la fin (accepte texte ou nœud) |
prepend(node/str) |
Ajoute au début |
remove() |
Supprime l'élément du DOM |
parentElement |
Accès au parent direct |
closest(sel) |
Remonte vers l'ancêtre le plus proche matchant |
children |
Liste des enfants directs (HTMLCollection) |
🌍 Window & Screen
innerWidth/Height: Taille viewportouterWidth/Height: Taille fenêtre navscreen.width/height: Résolution écranscrollTo(x, y): Défilementalert/confirm/prompt: Modales natives
📍 Location (URL)
href: URL complète (lecture/écriture)pathname: Chemin (/app/main)search: Paramètres (?id=1)reload(): Recharge la pageassign(url): Navigue (historique)replace(url): Remplace (pas d'historique)
🧭 Navigator & Storage
| API | Propriété / Méthode | Description |
|---|---|---|
| Clipboard | navigator.clipboard.writeText() |
Copier texte (Async) |
| UserAgent | navigator.userAgent |
Identité du navigateur |
| Géo | navigator.geolocation.getCurrentPosition() |
Position GPS |
| Langue | navigator.language |
Langue préférée (fr-FR) |
| History | history.back() / forward() |
Navigation précédente/suivante |
| History | history.pushState(data, t, url) |
Change URL sans recharger (SPA) |
| Storage | localStorage / sessionStorage |
Voir module 13 pour détails |
🖱️ Souris
click: Clic gauchedblclick: Double clicmouseenter: Survol (commence)mouseleave: Survol (finit)mousemove: Déplacementcontextmenu: Clic droit
⌨️ Clavier
keydown: Touche enfoncéekeyup: Touche relâchéee.key: Valeur ("Enter", "a")e.code: Code physique ("KeyA")e.ctrlKey: Ctrl pressé (bool)
📝 Formulaire
submit: Envoi (sur form)input: Modif valeur (temps réel)change: Modif validée (blur)focus: Prise de focusblur: Perte de focus
⚡ L'Objet Event (e)
| Propriété / Méthode | Description |
|---|---|
e.target |
L'élément qui a déclenché l'événement |
e.currentTarget |
L'élément qui porte le listener (this) |
e.preventDefault() |
Empêche l'action par défaut (ex: submit) |
e.stopPropagation() |
Arrête la remontée (bubbling) vers les parents |
addEventListener(type, fn) |
Attache un écouteur |
removeEventListener(type, fn) |
Détache un écouteur (nécessite la même fn ref) |
📱 Window & Document Events
DOMContentLoaded |
HTML chargé et parsé (DOM prêt) |
load |
Page entièrement chargée (images, CSS inclus) |
resize |
Taille fenêtre modifiée (utiliser debounce !) |
scroll |
Défilement page (utiliser throttle !) |
beforeunload |
Avant de quitter la page (confirmation) |
⏳ Méthodes de Promise
| Méthode | Description | Retour |
|---|---|---|
then(onSuccess, onError) |
Gère la résolution | New Promise |
catch(onError) |
Gère le rejet (erreur) | New Promise |
finally(onSettle) |
S'exécute toujours (fin) | New Promise |
Promise.all(iterable) |
Attend TOUT (rejette si une seule fail) | Promise([results]) |
Promise.allSettled(iterable) |
Attend TOUT (indépendamment réussite/échec) | Promise([{status, val}...]) |
Promise.race(iterable) |
Le premier réglé gagne (succès ou échec) | Promise(first) |
Promise.resolve(val) |
Crée une promesse résolue | Promise |
Promise.reject(reason) |
Crée une promesse rejetée | Promise |
⚡ Async / Await Pattern
async function getData() {
try {
const res = await fetch('/api');
if (!res.ok) throw new Error('404');
return await res.json();
} catch (e) {
console.error(e);
}
}
🌐 Fetch Avancé
fetch('/api/user', {
method: "POST",
headers: {
"Content-Type": "application/json",
"Authorization": "Bearer token"
},
body: JSON.stringify({ name: "Bob" })
});
// 📤 Envoi de Fichiers (FormData)
const formData = new FormData();
formData.append('avatar', fileInput.files[0]);
formData.append('username', 'bob123');
fetch('/upload', {
method: 'POST',
body: formData // Pas de Content-Type header (automatique)
});
// 🛑 Annuler une requête (AbortController)
const controller = new AbortController();
fetch('/long-task', { signal: controller.signal });
// Plus tard...
controller.abort(); // Annule la requête
⏱️ Contrôle du Temps
| Méthode | Description | Usage Typique |
|---|---|---|
setTimeout(fn, ms) |
Exécute 1 fois après délai | Retarder action |
clearTimeout(id) |
Annule un timeout | Annuler si utilisateur change d'avis |
setInterval(fn, ms) |
Répète à l'infini chaque X ms | Horloge, Polling |
clearInterval(id) |
Arrête un intervalle | Stop timer |
requestAnimationFrame(fn) |
Synchronisé avec refresh rate (60fps) | Animations fluides |
🔄 Boucle précise (Recursion)
// Mieux que setInterval pour tâches lourdes
setTimeout(function run() {
doHeavyTask();
setTimeout(run, 1000);
}, 1000);
🎨 Animation Loop
function animate() {
element.style.left = pos + 'px';
requestAnimationFrame(animate);
}
requestAnimationFrame(animate);
class User {
// Champ privé (ES2022)
#password;
// Champ statique
static count = 0;
constructor(name, password) {
this.name = name;
this.#password = password;
User.count++;
}
// Getter
get info() {
return `${this.name} (ID: ${this.#randomId()})`;
}
// Méthode d'instance
sayHi() {
console.log(`Bonjour ${this.name}`);
}
// Méthode privée
#randomId() {
return Math.floor(Math.random() * 1000);
}
// Méthode statique
static getCount() {
return User.count;
}
}
// Héritage
class Admin extends User {
constructor(name, pass, permissions) {
super(name, pass); // Appelle parent constructor
this.permissions = permissions;
}
}
🗝️ Mots-clés Classes
class |
Définition de la classe |
constructor |
Méthode d'initialisation (appelée par new) |
extends |
Héritage (Class A extends Class B) |
super |
Accès au parent (super.method() ou super()) |
static |
Appartient à la classe, pas aux instances |
# |
Préfixe pour champs/méthodes privés |
get / set |
Propriétés calculées (accessors) |
🌀 Générateurs (Generators)
function* idMaker() {
let index = 0;
while(true) yield index++;
}
const gen = idMaker();
gen.next().value; // 0
gen.next().value; // 1
🛡️ Proxy (Méta-programmation)
const target = {};
const handler = {
get: function(obj, prop) {
return prop in obj ? obj[prop] : "N/A";
}
};
const p = new Proxy(target, handler);
p.a = 1;
console.log(p.a, p.b); // 1, "N/A"
💎 Types & Syntaxes Modernes
| Feature | Exemple | Usage |
|---|---|---|
BigInt |
9007199254740991n |
Entiers > 2^53 - 1 |
Symbol |
const sym = Symbol('desc') |
Identifiant unique (clés privées) |
??= |
x ??= y |
Assigne si x est null/undefined |
&&= |
x &&= y |
Assigne si x est truthy |
||= |
x ||= y |
Assigne si x est falsy |
_ (Sep) |
1_000_000 |
Lisibilité des nombres |
📄 JSON
JSON.parse(str): String → ObjetJSON.stringify(obj): Objet → String- Limitations : Pas de fonctions, undefined, symboles.
stringify(obj, null, 2): Formatage joli (indent 2)
🚫 Gestion d'Erreurs
try {
// Code risqué
throw new Error("Oups !");
} catch (e) {
// Gestion
console.error(e.message);
} finally {
// Toujours exécuté
console.log("Cleanup");
}
⚠️ Types d'Erreurs Natifs
Error |
Erreur générique |
ReferenceError |
Variable non déclarée |
SyntaxError |
Code invalide |
TypeError |
Opération sur mauvais type (ex: null.f()) |
RangeError |
Nombre hors limites (ex: array length < 0) |
⚡ Types de Fonctions
| Type | Syntaxe | this Context |
|---|---|---|
| Function Declaration | function foo() {} |
Dynamique (dépend de l'appel) |
| Function Expression | const foo = function() {} |
Dynamique |
| Arrow Function | const foo = () => {} |
Lexical (hérité du parent) - Pas de this propre |
🎁 Paramètres Avancés
- Défaut :
function(a = 1) - Rest :
function(...args)→ Array - Spread :
call(...arr)→ Arguments
🔒 Closures
Une fonction qui "se souvient" de son scope
de création.
function counter() {
let count = 0;
return () => ++count;
}
const c = counter();
c(); // 1, c(); // 2
🔢 Math (Arrondis)
Math.round(4.7)→ 5 (Standard)Math.floor(4.9)→ 4 (Inférieur)Math.ceil(4.1)→ 5 (Supérieur)Math.trunc(4.9)→ 4 (Coupe décimale)val.toFixed(2)→ "10.00" (String)
🎲 Math (Calculs)
Math.random()→ 0..1Math.max(a, b, c)→ MaxMath.min(a, b, c)→ MinMath.abs(-5)→ 5Math.pow(2, 3)→ 2³ = 8Math.sqrt(16)→ 4
📅 Date (Getters)
d.getFullYear(): Année (4 chiffres)d.getMonth(): Mois (0-11) ⚠️d.getDate(): Jour mois (1-31)d.getDay(): Jour semaine (0-6)Date.now(): Timestamp actuel
🌍 Internationalisation (Intl)
| Format | Code | Résultat |
|---|---|---|
| Date FR | new Intl.DateTimeFormat('fr-FR').format(date) |
24/12/2025 |
| Devise | new Intl.NumberFormat('fr-FR', {style:'currency', currency:'EUR'}).format(10)
|
10,00 € |
| Mois Long | date.toLocaleDateString('fr-FR', {month:'long'}) |
décembre |
🧮 Opérateurs & Comparaisons
| Opérateur | Nom | Description |
|---|---|---|
=== |
Égalité stricte | Valeur ET Type identiques (Toujours utiliser) |
!== |
Inégalité stricte | Valeur OU Type différents |
&& |
ET Logique | Retourne la première valeur "falsy" ou la dernière |
|| |
OU Logique | Retourne la première valeur "truthy" |
! |
NON Logique | Inverse le booléen |
?? |
Nullish Coalescing | Retourne droite si gauche est null ou undefined |
?. |
Optional Chaining | Accès sécurisé (obj?.prop) → undefined si non-existant |
x ? y : z |
Ternaire | Si x vrai, alors y, sinon z |
❌ Valeurs Falsy
Sont évaluées à false dans if()
false0et-0""(chaîne vide)nullundefinedNaN(Not a Number)
✅ Valeurs Truthy
Tout le reste, y compris :
[](Tableau vide){}(Objet vide)"0"(String non vide)"false"(String non vide)function(){}