Exercices - JavaScript Moderne
Mettez en pratique ce que vous avez appris ! Ces exercices couvrent tous les concepts essentiels de JavaScript.
Comment travailler efficacement
- Essayez d'abord : Résolvez chaque exercice sans regarder la solution
- Testez dans la console : Ouvrez les DevTools (F12) et expérimentez
- Vérifiez les résultats : Utilisez
console.log()pour voir ce que votre code produit - Comparez : Regardez ensuite la solution et comprenez les différences
- L'objectif : Comprendre, pas copier ! Posez-vous "Pourquoi ça marche ?"
💡 Astuce : Les CodePlaygrounds interactifs ci-dessous sont parfaits pour tester rapidement !
Exercice 1 : Variables et types
Exercice : Types et variables
-
Créez les variables suivantes avec `const` :
- `name` : votre prénom (string)
- `age` : votre âge (number)
- `isStudent` : true (boolean)
- `courses` : un tableau avec 3 cours que vous suivez
-
Utilisez `typeof` pour afficher le type de chaque variable
-
Créez une variable `score` avec `let`, initialisée à 0, puis modifiez-la à 10, puis ajoutez 5
-
Essayez de réassigner `name` - que se passe-t-il ?
Exercice 2 : Arrow Functions
Exercice : Convertir en arrow functions
Convertissez ces fonctions classiques en arrow functions :
function greet(name) {
return `Bonjour ${name}!`;
}
function add(a, b) {
return a + b;
}
function multiply(a, b) {
return a * b;
}
function square(n) {
return n * n;
}Bonus : Utilisez le return implicite quand c'est possible !
Exercice 3 : Méthodes de tableaux
Exercice : Manipulation de tableaux
Avec ce tableau :
const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];- Créez un nouveau tableau `evens` contenant seulement les nombres pairs
- Créez un tableau `squares` contenant le carré de chaque nombre
- Calculez la somme de tous les nombres (utilisez `.reduce()`)
- Trouvez le premier nombre supérieur à 5
- Vérifiez s'il y a au moins un nombre supérieur à 8
- Vérifiez si tous les nombres sont inférieurs à 20
Méthodes à utiliser : `.filter()`, `.map()`, `.reduce()`, `.find()`, `.some()`, `.every()`
💻 🎯 Testez les méthodes de tableaux
💡 Astuce : Modifiez le code ci-dessus et cliquez sur "Exécuter" pour voir le résultat
Exercice 4 : Objets et méthodes
Exercice : Manipulation d'objets
Avec ce tableau d'étudiants :
const students = [
{ id: 1, name: 'Alice', grade: 15 },
{ id: 2, name: 'Bob', grade: 12 },
{ id: 3, name: 'Charlie', grade: 18 },
{ id: 4, name: 'Diana', grade: 9 }
];- Extraire tous les noms dans un tableau
- Créer un tableau avec seulement les étudiants ayant une note ≥ 12
- Calculer la moyenne des notes
- Trouver l'étudiant avec l'ID 3
- Vérifier s'il y a au moins un étudiant avec une note inférieure à 10
Exercice 5 : Destructuration
Exercice : Destructuration d'objets et tableaux
Avec cet objet et ce tableau :
const user = {
name: 'Thomas',
age: 30,
city: 'Paris',
country: 'France'
};
const colors = ['red', 'green', 'blue', 'yellow'];- Utilisez la destructuration pour extraire `name` et `age` de `user`
- Extrayez `name` en le renommant `userName` et `city` en `userCity`
- Extrayez les deux premiers éléments de `colors` dans `first` et `second`
- Extrayez le troisième élément de `colors` (ignorez les deux premiers)
- Créez une fonction `displayUser` qui prend un objet et utilise la destructuration dans les paramètres pour afficher "Thomas a 30 ans"
Exercice 6 : Spread Operator
Exercice : Spread operator et immutabilité
- Fusionnez
[1, 2, 3]et[4, 5, 6]avec le spread operator - Copiez
[1, 2, 3]et ajoutez 4 et 5 (sans modifier l'original) - Copiez cet objet et changez l'âge à 26 (sans modifier l'original) :
const user = { name: "Alice", age: 25 };- Fusionnez ces deux objets :
const person = { name: "Bob", age: 30 };
const address = { city: "Paris", country: "France" };- Ajoutez une propriété
discount: 10à cet objet :
const product = { name: "Laptop", price: 1000 };Attention
Important : Vérifiez que les originaux ne sont pas modifiés !
Exercice 7 : Template Literals
Exercice : Template literals et interpolation
Utilisez les template literals (backticks `) pour :
- Créer un message : "Bonjour, je m'appelle [nom] et j'ai [age] ans."
- Calculer et afficher : "Total: [prix × quantité]€"
- Afficher "Résultat: Réussi" si score ≥ 10, sinon "Résultat: Échoué"
- Créer un email multi-lignes avec interpolation
Astuce : Utilisez ${expression} pour l'interpolation
Exercice 8 : Combinaison de concepts
Exercice : Projet : Gestion d'une liste de tâches
Avec cette liste de tâches :
const tasks = [
{ id: 1, title: 'Apprendre React', completed: false, priority: 'high' },
{ id: 2, title: 'Faire les courses', completed: true, priority: 'low' },
{ id: 3, title: 'Réviser JavaScript', completed: false, priority: 'high' },
{ id: 4, title: 'Appeler maman', completed: false, priority: 'medium' }
];Partie 1 : Extraction et filtrage
- Extraire tous les titres dans un tableau (utilisez
.map()) - Filtrer les tâches non terminées (
completed: false) - Filtrer les tâches prioritaires (
priority: 'high') ET non terminées (combinez deux conditions)
Partie 2 : Immutabilité
- Marquer la tâche avec
id: 1comme terminée sans modifier l'original (.map()+ spread) - Ajouter cette nouvelle tâche sans modifier l'original (spread operator) :
const newTask = { id: 5, title: "Faire du sport", completed: false, priority: "medium" };Partie 3 : Calculs et affichage
- Compter le nombre de tâches terminées (
.filter()+.length) - Créer un message avec template literal : "Vous avez X tâches, dont Y terminée(s)."
Approche progressive
Cet exercice est complexe ! Résolvez-le étape par étape :
- Testez chaque partie séparément dans la console
- Vérifiez que l'original n'est pas modifié (parties 4 et 5)
- Combinez :
.map(),.filter(), spread operator, et template literals
💻 🎯 Projet : Gestion de tâches interactive
💡 Astuce : Modifiez le code ci-dessus et cliquez sur "Exécuter" pour voir le résultat
Exercice 9 : Lecture et validation de code
Compétence essentielle
Savoir lire et comprendre du code est aussi important que savoir l'écrire. C'est crucial quand vous travaillez avec l'IA : vous devez pouvoir valider le code généré, détecter les erreurs, et comprendre ce qu'il fait vraiment.
Exercice : Trouver les bugs dans le code
Lisez attentivement les 5 codes suivants. Chacun contient un bug ou une mauvaise pratique.
Pour chaque code :
- Identifiez le problème
- Expliquez pourquoi c'est un bug
- Proposez la correction
Code 1 : Comprendre le comportement de .push()
const numbers = [1, 2, 3];
const result = numbers.push(4);
console.log(result); // Que contient result ?
console.log(numbers); // numbers a-t-il changé ?Questions :
- Que retourne
.push()? (le tableau ou autre chose ?) - Est-ce que
numbersest modifié ? - Si vous aviez besoin de l'immutabilité, comment feriez-vous ?
- Quand utiliser
.push()vs spread operator ?
Code 2 : Filtrer les utilisateurs adultes
const users = [
{ name: 'Alice', age: 25 },
{ name: 'Bob', age: 17 },
{ name: 'Charlie', age: 30 }
];
const adults = users.map(u => {
if (u.age >= 18) return u;
});
console.log(adults); // Que contient adults ?Questions :
- Quelle est la différence entre
.map()et.filter()? - Quel est le problème avec ce code ?
- Quelle méthode devrait être utilisée ?
Code 3 : Mettre à jour l'âge d'un utilisateur
const user = { name: 'Alice', age: 25 };
const updatedUser = user;
updatedUser.age = 26;
console.log(user.age); // Que vaut user.age ?
console.log(updatedUser.age); // Que vaut updatedUser.age ?Questions :
- Est-ce que
useretupdatedUsersont deux objets différents ? - Comment créer une vraie copie ?
Code 4 : Calculer la somme d'un tableau
const numbers = [1, 2, 3, 4, 5];
const sum = numbers.reduce((acc, n) => acc + n);
// Et si le tableau est vide ?
const empty = [];
const sumEmpty = empty.reduce((acc, n) => acc + n);Questions :
- Que se passe-t-il avec
empty.reduce()? - Quelle est la bonne pratique avec
.reduce()?
Code 5 : Trouver tous les nombres pairs
const numbers = [1, 2, 3, 4, 5];
const evens = numbers.find(n => n % 2 === 0);
console.log(evens); // Que contient evens ?Questions :
- Quelle est la différence entre
.find()et.filter()? - Quel est le problème ici ?
Pourquoi cet exercice est important
Quand vous utilisez l'IA pour générer du code :
- L'IA peut faire des erreurs comme celles-ci
- Vous devez pouvoir les détecter avant d'utiliser le code
- Comprendre le code est plus important que de le copier-coller
Cet exercice vous entraîne à lire, analyser et valider du code.