1. Quelle est la difference entre var, let et const ?
var: scope fonction, hoisting, redeclarablelet: scope bloc, pas de hoisting utilisable, non redeclarableconst: commeletmais non reassignable
var x = 1; // function-scoped
let y = 2; // block-scoped
const z = 3; // block-scoped, immutable reference
2. Qu'est-ce qu'une closure ?
Une closure est une fonction qui se "souvient" de son environnement lexical meme apres que la fonction parente a termine son execution.
function compteur() {
let count = 0;
return function() {
return ++count;
};
}
const inc = compteur();
inc(); // 1
inc(); // 2
3. Comment fonctionne le hoisting ?
Les declarations de variables (var) et de fonctions sont "remontees" en haut de leur scope lors de la compilation.
console.log(x); // undefined (hoisting de var)
var x = 5;
console.log(y); // ReferenceError (let n'est pas hoiste)
let y = 10;
4. Expliquez l'event loop
L'event loop gere l'execution asynchrone en JavaScript :
- Call stack : execute le code synchrone
- Web APIs : gere les operations async (setTimeout, fetch)
- Callback queue : file d'attente des callbacks
- Microtask queue : Promises (prioritaire)
5. Qu'est-ce que le prototypal inheritance ?
En JavaScript, les objets heritent directement d'autres objets via la chaine de prototypes (__proto__).
const animal = { parler() { return 'Son'; } };
const chien = Object.create(animal);
chien.parler(); // 'Son' (herite du prototype)
6. Difference entre == et === ?
==: egalite avec coercion de type===: egalite stricte (type + valeur)
'5' == 5 // true (coercion)
'5' === 5 // false (types differents)
7. Les Promises et async/await
// Promise
fetch('/api/data')
.then(res => res.json())
.then(data => console.log(data))
.catch(err => console.error(err));
// async/await
async function getData() {
try {
const res = await fetch('/api/data');
const data = await res.json();
return data;
} catch (err) {
console.error(err);
}
}
8. Destructuring et spread operator
const { nom, age } = personne;
const [premier, ...reste] = tableau;
const copie = { ...original, nouveau: 'champ' };
9-30. Autres questions courantes
- Arrow functions vs fonctions classiques
thisen JavaScript- Map, Set, WeakMap, WeakSet
- Template literals
- Modules ES6 (import/export)
- Optional chaining (
?.) et nullish coalescing (??) - Array methods (map, filter, reduce, find)
- Event delegation et bubbling
- Local Storage vs Session Storage
- fetch API et gestion des erreurs