📘 Bases du Langage
1. Quelle est la différence entre var, let et const ?
var a une portée de fonction et peut « s'échapper » d'un bloc ; let et const ont une portée de bloc, visibles seulement dans leur propre bloc { }. let peut être réassignée, const non. Aujourd'hui var ne s'utilise presque plus.2. Quelle est la différence entre == et === ?
== compare les valeurs avec conversion de types ("5" == 5 → true), === compare sans conversion, type inclus ("5" === 5 → false). En pratique, on utilise presque toujours ===.3. Quelle est la différence entre null et undefined ?
undefined est la valeur par défaut quand rien n'a été assigné à une variable. null est une valeur qu'un développeur assigne délibérément, pour dire explicitement « c'est vide ici ».4. Quels types de données existe-t-il en JavaScript ?
Des types primitifs :
string, number, boolean, undefined, null, symbol, bigint. Et un type non primitif — object (qui inclut les tableaux et les fonctions).5. Qu'est-ce que le hoisting ?
Un mécanisme par lequel les déclarations de variables (
var) et de fonctions sont déplacées en haut de leur portée avant l'exécution du code. let et const sont aussi hissées, mais tombent dans la « temporal dead zone » — on ne peut pas y accéder avant leur déclaration.6. Qu'est-ce qu'une closure ?
Une fonction qui « se souvient » des variables d'une fonction externe, même après que celle-ci a fini de s'exécuter. Un exemple classique est une fonction compteur qui garde son état entre les appels.
🗂️ Tableaux et Objets
7. Quelle est la différence entre map et forEach ?
forEach parcourt simplement un tableau et ne renvoie rien. map parcourt aussi un tableau, mais renvoie un nouveau tableau avec le résultat de la fonction pour chaque élément.8. Comment vérifies-tu si une variable est un tableau ?
Avec
Array.isArray(valeur). L'opérateur typeof renvoie "object" pour un tableau, donc il ne sert pas à ça.9. Comment copies-tu un objet ou un tableau ?
Pour une copie superficielle : l'opérateur spread
{...obj} ou [...arr]. Pour une copie profonde d'objets imbriqués, on utilise souvent structuredClone(obj) ou JSON.parse(JSON.stringify(obj)).10. Comment supprimes-tu un élément d'un tableau ?
Avec
splice(index, 1) — modifie le tableau original. Ou avec filter, si tu as besoin d'un nouveau tableau sans modifier l'original : arr.filter(item => item !== valeur).11. Que fait la méthode reduce ?
Elle réduit un tableau à une seule valeur, en parcourant chaque élément et en accumulant un résultat. Souvent utilisée pour additionner des valeurs :
arr.reduce((sum, n) => sum + n, 0).🖥️ Le DOM et les Événements
12. Comment sélectionnes-tu un élément sur la page ?
Le plus courant est
document.querySelector(".classe") pour un élément et document.querySelectorAll(".classe") pour plusieurs. Il existe aussi getElementById.13. Quelle est la différence entre addEventListener et onclick ?
onclick ne permet d'assigner qu'un seul gestionnaire — un nouveau remplace le précédent. addEventListener permet d'ajouter autant de gestionnaires que voulu au même événement, et de les retirer de façon plus flexible.14. Qu'est-ce que la propagation d'événements (event bubbling) ?
Quand un événement se produit sur un élément imbriqué, il « remonte » ensuite à travers tous ses éléments parents. Ça permet d'utiliser la délégation d'événements : assigner un seul gestionnaire au parent plutôt que plusieurs à ses enfants.
15. Comment empêches-tu le comportement par défaut d'un événement ?
En appelant
event.preventDefault() dans le gestionnaire — par exemple, pour qu'un formulaire ne recharge pas la page lors de son envoi.⏳ Code Asynchrone
16. Qu'est-ce qu'un Promise ?
Un objet qui représente le résultat d'une opération asynchrone — il peut être dans l'un de trois états :
pending (en attente), fulfilled (accompli) ou rejected (rejeté).17. Comment fonctionnent async/await ?
C'est du « sucre syntaxique » au-dessus des promises : une fonction est marquée
async, et à l'intérieur await « attend » le résultat d'un promise sans bloquer le reste du code de la page. Le code se lit comme du code synchrone.18. Quelle est la différence entre setTimeout et setInterval ?
setTimeout exécute du code une fois après un délai défini. setInterval répète l'exécution à un intervalle spécifié jusqu'à être arrêté avec clearInterval.💬 Questions Générales
19. Qu'est-ce que this en JavaScript ?
Une référence à l'objet dans le contexte duquel une fonction s'exécute. La valeur de
this dépend de la façon dont la fonction a été appelée. Les fonctions fléchées n'ont pas leur propre this — elles le prennent du code environnant.20. Comment trouves-tu généralement la cause d'un bug dans ton code ?
Une bonne réponse : je lis le message d'erreur dans la console, je place des
console.log à des points suspects ou j'utilise des breakpoints dans les DevTools, je réduis le problème à une ligne précise, je vérifie les valeurs des variables à chaque étape.Que faire ensuite
Tu te prépares pour ton premier entretien ?
Le cours de JavaScript couvre non seulement ces sujets, mais de vrais problèmes pratiques — après lui, répondre à ce type de questions devient naturel, pas mémorisé.