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 à 5
  • str.substring(0, 5) : Similaire slice
  • str.split(",") : Découpe en Array
  • str.charAt(0) : Caractère à index

✨ Transformation

  • str.trim() : Retire espaces tour
  • str.toUpperCase() : MAJUSCULE
  • str.toLowerCase() : minuscule
  • str.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 viewport
  • outerWidth/Height : Taille fenêtre nav
  • screen.width/height : Résolution écran
  • scrollTo(x, y) : Défilement
  • alert/confirm/prompt : Modales natives

📍 Location (URL)

  • href : URL complète (lecture/écriture)
  • pathname : Chemin (/app/main)
  • search : Paramètres (?id=1)
  • reload() : Recharge la page
  • assign(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 gauche
  • dblclick : Double clic
  • mouseenter : Survol (commence)
  • mouseleave : Survol (finit)
  • mousemove : Déplacement
  • contextmenu : Clic droit

⌨️ Clavier

  • keydown : Touche enfoncée
  • keyup : Touche relâchée
  • e.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 focus
  • blur : 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 → Objet
  • JSON.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..1
  • Math.max(a, b, c) → Max
  • Math.min(a, b, c) → Min
  • Math.abs(-5) → 5
  • Math.pow(2, 3) → 2³ = 8
  • Math.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()
  • false
  • 0 et -0
  • "" (chaîne vide)
  • null
  • undefined
  • NaN (Not a Number)

✅ Valeurs Truthy

Tout le reste, y compris :
  • [] (Tableau vide)
  • {} (Objet vide)
  • "0" (String non vide)
  • "false" (String non vide)
  • function(){}
← Strings Aller au Quiz →