JavaScript

Apprendre JavaScript : Le Guide Complet pour Débutants (2025)

Mark Toledo

Mark Toledo

13 janvier 2025

Apprendre JavaScript : Le Guide Complet pour Débutants (2025)

Apprendre JavaScript est la meilleure décision que vous pouvez prendre en 2025 pour votre carrière de développeur. JavaScript est partout : sites web, applications mobiles, serveurs, IoT, et même l'intelligence artificielle.

Ce guide complet vous accompagne de zéro à héros avec des explications claires et des exemples pratiques.

Pourquoi apprendre JavaScript ?

JavaScript est le langage le plus demandé sur le marché de l'emploi :

  • 97% des sites web utilisent JavaScript
  • +1.5 million d'offres d'emploi dans le monde
  • Polyvalent : frontend, backend, mobile, desktop
  • Communauté massive : documentation et ressources abondantes
  • Évolution constante : nouvelles fonctionnalités chaque année

Par où commencer ?

Prérequis

Pour apprendre JavaScript, vous avez besoin de :

  1. Un navigateur web (Chrome, Firefox, Edge)
  2. Un éditeur de code (VS Code recommandé)
  3. De la motivation !

Premier programme JavaScript

Ouvrez la console de votre navigateur (F12 > Console) et tapez :

console.log("Bonjour, JavaScript !")

Félicitations, vous venez d'écrire votre premier code JavaScript !

Les bases de JavaScript

Variables

Les variables stockent des données. En JavaScript moderne, on utilise let et const.

// const pour les valeurs qui ne changent pas
const nom = "Alice"
const age = 25
const estDeveloppeur = true

// let pour les valeurs qui peuvent changer
let score = 0
score = score + 10  // score vaut maintenant 10

// Afficher les valeurs
console.log(nom)         // "Alice"
console.log(age)         // 25
console.log(score)       // 10

Types de données

JavaScript a plusieurs types de données :

// String (texte)
const prenom = "Marie"
const message = 'Bonjour le monde'
const template = `Mon nom est ${prenom}`  // Template literal

// Number (nombre)
const entier = 42
const decimal = 3.14
const negatif = -10

// Boolean (vrai/faux)
const estVrai = true
const estFaux = false

// Array (tableau)
const fruits = ["pomme", "banane", "orange"]
const nombres = [1, 2, 3, 4, 5]

// Object (objet)
const personne = {
  nom: "Dupont",
  prenom: "Jean",
  age: 30
}

// null et undefined
const vide = null
let nonDefini  // undefined

Opérateurs

// Arithmétiques
const a = 10 + 5   // 15
const b = 10 - 5   // 5
const c = 10 * 5   // 50
const d = 10 / 5   // 2
const e = 10 % 3   // 1 (reste de la division)
const f = 2 ** 3   // 8 (puissance)

// Comparaison
console.log(5 == "5")   // true (égalité simple)
console.log(5 === "5")  // false (égalité stricte - recommandé)
console.log(5 !== "5")  // true (différent strict)
console.log(5 > 3)      // true
console.log(5 <= 5)     // true

// Logiques
console.log(true && false)  // false (ET)
console.log(true || false)  // true (OU)
console.log(!true)          // false (NON)

Structures de contrôle

Conditions (if/else)

const age = 18

if (age >= 18) {
  console.log("Vous êtes majeur")
} else if (age >= 13) {
  console.log("Vous êtes adolescent")
} else {
  console.log("Vous êtes enfant")
}

// Opérateur ternaire (raccourci)
const statut = age >= 18 ? "majeur" : "mineur"

Boucles

// Boucle for
for (let i = 0; i < 5; i++) {
  console.log(`Itération ${i}`)
}

// Boucle for...of (pour les tableaux)
const fruits = ["pomme", "banane", "orange"]
for (const fruit of fruits) {
  console.log(fruit)
}

// Boucle while
let compteur = 0
while (compteur < 3) {
  console.log(compteur)
  compteur++
}

// forEach (méthode de tableau)
fruits.forEach((fruit, index) => {
  console.log(`${index}: ${fruit}`)
})

Fonctions JavaScript

Les fonctions sont des blocs de code réutilisables.

Fonction classique

function saluer(nom) {
  return `Bonjour, ${nom} !`
}

console.log(saluer("Alice"))  // "Bonjour, Alice !"

Fonction fléchée (arrow function)

// Syntaxe courte pour les fonctions
const saluer = (nom) => `Bonjour, ${nom} !`

// Avec plusieurs paramètres
const additionner = (a, b) => a + b

// Avec plusieurs lignes
const calculer = (a, b) => {
  const somme = a + b
  const produit = a * b
  return { somme, produit }
}

console.log(additionner(5, 3))  // 8
console.log(calculer(4, 2))     // { somme: 6, produit: 8 }

Paramètres par défaut

function saluer(nom = "inconnu", ponctuation = "!") {
  return `Bonjour, ${nom}${ponctuation}`
}

console.log(saluer())           // "Bonjour, inconnu!"
console.log(saluer("Marie"))    // "Bonjour, Marie!"
console.log(saluer("Jean", "?")) // "Bonjour, Jean?"

Tableaux (Arrays)

Les tableaux stockent des listes de valeurs.

const nombres = [1, 2, 3, 4, 5]

// Accéder aux éléments
console.log(nombres[0])  // 1 (premier élément)
console.log(nombres[4])  // 5 (dernier élément)

// Longueur
console.log(nombres.length)  // 5

// Ajouter/supprimer
nombres.push(6)      // Ajoute à la fin
nombres.pop()        // Supprime le dernier
nombres.unshift(0)   // Ajoute au début
nombres.shift()      // Supprime le premier

// Méthodes utiles
const fruits = ["pomme", "banane", "orange", "kiwi"]

// map - transformer chaque élément
const majuscules = fruits.map(f => f.toUpperCase())
// ["POMME", "BANANE", "ORANGE", "KIWI"]

// filter - filtrer les éléments
const courtes = fruits.filter(f => f.length <= 5)
// ["pomme", "kiwi"]

// find - trouver un élément
const avecO = fruits.find(f => f.includes("o"))
// "pomme"

// reduce - réduire à une seule valeur
const total = [1, 2, 3, 4].reduce((acc, n) => acc + n, 0)
// 10

Objets JavaScript

Les objets regroupent des données liées.

const utilisateur = {
  nom: "Dupont",
  prenom: "Marie",
  age: 28,
  email: "marie@exemple.fr",
  adresse: {
    ville: "Paris",
    codePostal: "75001"
  },
  // Méthode (fonction dans un objet)
  sePresenter() {
    return `Je suis ${this.prenom} ${this.nom}`
  }
}

// Accéder aux propriétés
console.log(utilisateur.prenom)        // "Marie"
console.log(utilisateur["email"])      // "marie@exemple.fr"
console.log(utilisateur.adresse.ville) // "Paris"
console.log(utilisateur.sePresenter()) // "Je suis Marie Dupont"

// Destructuring (extraction)
const { nom, prenom, age } = utilisateur
console.log(prenom)  // "Marie"

// Spread operator (copie)
const copie = { ...utilisateur, age: 29 }

Manipulation du DOM

Le DOM (Document Object Model) permet de manipuler les pages web.

<!DOCTYPE html>
<html>
<body>
  <h1 id="titre">Mon Titre</h1>
  <button id="bouton">Cliquez-moi</button>
  <ul id="liste"></ul>

  <script>
    // Sélectionner des éléments
    const titre = document.getElementById("titre")
    const bouton = document.querySelector("#bouton")
    const liste = document.querySelector("#liste")

    // Modifier le contenu
    titre.textContent = "Nouveau Titre"
    titre.style.color = "blue"

    // Ajouter un événement
    bouton.addEventListener("click", () => {
      alert("Bouton cliqué !")
    })

    // Créer des éléments
    const fruits = ["Pomme", "Banane", "Orange"]
    fruits.forEach(fruit => {
      const li = document.createElement("li")
      li.textContent = fruit
      liste.appendChild(li)
    })
  </script>
</body>
</html>

JavaScript asynchrone

Le JavaScript asynchrone permet d'exécuter du code sans bloquer l'interface.

Promesses

// Créer une promesse
function attendre(ms) {
  return new Promise(resolve => {
    setTimeout(resolve, ms)
  })
}

// Utiliser une promesse
attendre(2000).then(() => {
  console.log("2 secondes écoulées !")
})

Async/Await

// Syntaxe plus lisible pour les promesses
async function chargerDonnees() {
  try {
    const response = await fetch("https://api.exemple.fr/users")
    const users = await response.json()
    console.log(users)
  } catch (error) {
    console.error("Erreur:", error)
  }
}

chargerDonnees()

Fetch API

// Récupérer des données
async function getUsers() {
  const response = await fetch("https://jsonplaceholder.typicode.com/users")
  const users = await response.json()
  return users
}

// Envoyer des données
async function createUser(user) {
  const response = await fetch("https://api.exemple.fr/users", {
    method: "POST",
    headers: {
      "Content-Type": "application/json"
    },
    body: JSON.stringify(user)
  })
  return response.json()
}

Exercices pratiques

Exercice 1 : Calculatrice simple

function calculer(a, b, operation) {
  switch (operation) {
    case "+": return a + b
    case "-": return a - b
    case "*": return a * b
    case "/": return b !== 0 ? a / b : "Erreur: division par zéro"
    default: return "Opération inconnue"
  }
}

console.log(calculer(10, 5, "+"))  // 15
console.log(calculer(10, 5, "*"))  // 50

Exercice 2 : Liste de tâches

const taches = []

function ajouterTache(texte) {
  taches.push({ id: Date.now(), texte, terminee: false })
}

function terminerTache(id) {
  const tache = taches.find(t => t.id === id)
  if (tache) tache.terminee = true
}

function afficherTaches() {
  taches.forEach(t => {
    const statut = t.terminee ? "✓" : "○"
    console.log(`${statut} ${t.texte}`)
  })
}

Ressources pour continuer

Vous avez maintenant les bases pour apprendre JavaScript ! Voici comment continuer :

  1. Pratiquez : Créez de petits projets (calculatrice, todo list, jeu)
  2. Approfondissez : Découvrez les frameworks (Vue.js, React)
  3. Backend : Apprenez Node.js pour le côté serveur

Conclusion

Apprendre JavaScript demande de la pratique régulière. Commencez par les bases, créez des projets personnels, et progressivement vous maîtriserez ce langage incontournable.

Prochaines étapes recommandées :