Java Script
Java Script
2025
2. Quelle méthode permet de transformer un 10. Quelle structure permet de gérer les erreurs
tableau en chaîne de caractères en insérant un avec un bloc d’exécution et un bloc de
séparateur ? récupération ?
A. split() A. if / else
B. join() B. try / catch
C. concat() C. switch / case
D. reduce() D. throw / return
3. Que retourne typeof null en JavaScript ? 11. Quel mot-clé est utilisé pour stopper
A. "null" entièrement une boucle for ?
B. "undefined" A. stop
C. "object" B. exit
D. "string" C. break
D. return
4. Comment s’appelle la phase où JavaScript
prépare les déclarations de variables et de 12. Que fait Array.prototype.map() ?
fonctions en mémoire avant l’exécution ? A. Il modifie le tableau d’origine.
A. Héritage B. Il renvoie un nouveau tableau transformé.
B. Initialisation C. Il efface le contenu du tableau.
C. Hoisting D. Il trie le tableau.
D. Instanciation
13. Quelle est la portée d’une variable déclarée
5. Quelle est la valeur de NaN === NaN ? avec var dans une fonction ?
A. true A. Portée bloc
B. false B. Portée globale
C. Lève une erreur C. Portée de fonction
D. undefined D. Portée script uniquement
6. Quelle méthode ajoute un ou plusieurs 14. Quelle est la sortie de console.log(2 == '2') ?
éléments à la fin d’un tableau ? A. true
A. push() B. false
B. pop() C. undefined
C. unshift() D. Erreur de type
D. shift()
15. Dans une fonction fléchée, que représente this
7. Lequel de ces types n’existe pas en JavaScript ?
? A. L’objet global (window en navigateur)
A. number B. Le contexte courant
B. boolean C. L’instance de la fonction
C. symbol D. Il n’existe pas de this dans les fonctions
D. double fléchées
8. Quelle méthode est utilisée pour convertir une 16. Quelle est la valeur par défaut de arguments
chaîne en nombre entier ? dans une fonction fléchée ?
A. parseInt() A. Un tableau vide
B. Tous les arguments passés 26. Quel est l’événement déclenché quand la page
C. undefined a fini de se charger en HTML ?
D. Les fonctions fléchées n’ont pas arguments A. onload
B. DOMContentLoaded
17. Que retourne typeof [] ? C. loadend
A. "array" D. ready
B. "object"
C. "[]" 27. Quel opérateur compare et convertit
D. "undefined" éventuellement les types avant comparaison ?
A. ===
18. Quelle méthode permet de vérifier si un B. !==
tableau contient un élément ? C. ==
A. Array.includes() D. =
B. Array.has()
C. Array.find() 28. Quelle méthode convertit un objet JavaScript
D. Array.match() en JSON ?
A. JSON.parse()
19. Que renvoie false == 0 ? B. JSON.stringify()
A. true C. obj.toString()
B. false D. String()
C. undefined
D. Lève une erreur 29. Dans quelle portée vit une variable déclarée
avec let dans un bloc if ?
20. Quelle méthode supprime le dernier élément A. Portée globale
d’un tableau et le renvoie ? B. Portée de fonction
A. push() C. Portée du bloc if
B. pop() D. Portée de script
C. shift()
D. splice() 30. Comment se nomme la syntaxe suivante :
(...args) => {} ?
21. Quelle syntaxe permet de déstructurer un A. Fonction classique
objet ? B. Fonction anonyme
A. let { nom } = objet; C. Fonction fléchée (arrow function)
B. let [ nom ] = objet; D. Méthode d’un objet
C. let ( nom ) = objet;
D. let <nom> = objet; 31. Quelle méthode array renvoie le premier
élément qui satisfait une condition ?
22. Comment déclarer une constante en A. filter()
JavaScript ? B. find()
A. var CONSTANT C. includes()
B. let constant D. forEach()
C. const constant
D. CONST constant 32. Quel objet global représente l’API de la
console en JavaScript ?
23. Quel est le résultat de typeof NaN ? A. console
A. "number" B. log
B. "NaN" C. window.consoleAPI
C. "undefined" D. debug
D. "object"
33. Quelle est la sortie de Boolean([]) ?
24. Que fait la méthode A. false
String.prototype.slice(start, end) ? B. true
A. Supprime une partie de la chaîne C. Lève une erreur
B. Renvoie une sous-chaîne entre start et end D. null
(exclu)
C. Convertit la chaîne en tableau 34. Comment définit-on une propriété d’un objet
D. Découpe la chaîne en mots en utilisant la notation littérale ?
A. let obj = { nom: "Alice" };
25. Qu’est-ce qui n’est pas une structure de B. let obj = Object(nom: "Alice");
données native en JavaScript ? C. let obj = (nom = "Alice");
A. Map D. obj.nom = "Alice";
B. Set
C. WeakMap 35. Que fait la méthode Array.prototype.forEach() ?
D. List A. Renvoie un nouveau tableau
B. Exécute une fonction sur chaque élément sans A. promise.stack()
retourner de résultat B. promise.next()
C. Filtre les éléments selon une condition C. promise.then()
D. Casse la boucle dès qu’une condition est D. promise.link()
remplie
44. Comment nomme-t-on une fonction passée en
36. Comment générer un entier aléatoire entre 0 et paramètre à une autre fonction ?
9 inclus ? A. Fonction dynamique
A. Math.random() * 10 B. Fonction callback
B. Math.floor(Math.random() * 10) C. Fonction flechée
C. Math.floor(Math.random() * 9) D. Fonction asynchrone
D. Math.ceil(Math.random() * 9)
45. Quelle méthode JSON convertit une chaîne
37. Quelle propriété d’un objet Error en JavaScript JSON en objet JavaScript ?
contient le message d’erreur ? A. JSON.stringify()
A. Error.text B. JSON.parse()
B. Error.message C. JSON.format()
C. Error.info D. JSON.decode()
D. Error.description
46. Quelle syntaxe ES6 permet d’importer une
38. Quelle est la bonne façon de déclarer une exportation par défaut ?
classe en JavaScript (ES6) ? A. import { default } from "module";
A. function ClassName {} B. import default from "module";
B. class ClassName {} C. import * from "module";
C. var ClassName = class {} D. import something from "module";
D. create class ClassName {}
47. Que renvoie typeof function(){} ?
39. Que renvoie isNaN("Hello") ? A. "function"
A. true B. "object"
B. false C. "function object"
C. Lève une erreur D. "undefined"
D. "Hello"
48. Lequel de ces opérateurs est utilisé pour la
40. Quel mot-clé permet de sortir d’une fonction et décomposition d’un tableau en arguments de
éventuellement de renvoyer une valeur ? fonction ?
A. break A. ...
B. stop B. ::
C. return C. >>
D. exit D. ??
41. Quelle syntaxe pour déclarer un module ES ? 49. Que fait l’opérateur ?? (nullish coalescing) ?
A. <script type="text/javascript"> A. Compare strictement deux valeurs
B. <script type="module"> B. Retourne la valeur de droite si la valeur de
C. <script module> gauche est null ou undefined
D. <module> C. Effectue la fusion de deux objets
D. Vérifie si la valeur est strictement null
42. Quelle est la sortie de console.log(typeof
undefined) ? 50. Que se passe-t-il si on appelle une fonction
A. "object" avant sa déclaration avec function
B. "null" maFonction(){} ?
C. "undefined" A. Erreur de référence
D. "string" B. La fonction est hoistée, donc accessible
C. La fonction est ignorée
43. Quelle méthode permet de chainer des D. Le code plante uniquement en mode strict
promesses de façon séquentielle ?
Partie 2 : QCM à Choix Multiples (50 questions)
Attention : Ici, plusieurs réponses peuvent être correctes. C. push()
D. pop()
1. Quelles sont les méthodes qui modifient
directement le tableau initial ? 2. Quelles valeurs sont considérées comme falsy
A. map() en JavaScript ?
B. splice() A. false
B. 0
C. null C. !==
D. undefined D. !=
3. Lesquels de ces opérateurs sont des 12. Lesquelles de ces méthodes sont disponibles
opérateurs logiques ? sur un objet Promise ?
A. && A. .then()
B. || B. .catch()
C. === C. .all()
D. ! D. .finally()
4. Lesquels de ces objets sont des objets globaux 13. Lesquels de ces mots-clés sont utilisés pour
du navigateur ? définir une classe et un constructeur ES6 ?
A. window A. class
B. document B. function
C. console C. constructor
D. NodeList D. extends
5. Lesquelles de ces syntaxes créent un tableau 14. Lesquelles de ces valeurs sont évaluées à true
vide ? en contexte booléen ?
A. const arr = []; A. '0' (string)
B. const arr = new Array(); B. [] (tableau vide)
C. const arr = {}; C. null
D. const arr = [null]; D. {} (objet vide)
6. Quels mots-clés permettent de déclarer des 15. Lesquels de ces objets sont utilisables pour
variables en ES6 ? effectuer des requêtes HTTP en JavaScript
A. var (côté navigateur) ?
B. let A. XMLHttpRequest
C. const B. fetch
D. function C. axios (librairie externe)
D. Response
7. Lesquels de ces types sont des types primitifs
en JavaScript ? 16. Dans quels cas this fait référence à l’objet
A. string global en mode non strict ?
B. number A. Dans une fonction classique appelée sans
C. boolean contexte
D. object B. Dans une fonction fléchée
C. Dans un événement DOM sur un élément
8. Quels sont les deux paramètres de base de la D. Dans une fonction de rappel (callback)
fonction exécuteur d’une promesse ? attachée à un objet
A. resolve
B. reject 17. Lesquelles de ces méthodes peuvent être
C. success utilisées pour itérer sur un tableau sans
D. error modifier l’original ?
A. forEach()
9. Lesquelles de ces boucles existent en B. map()
JavaScript ? C. reduce()
A. for D. splice()
B. for...in
C. for...of 18. Quels sont les éléments du modèle de
D. foreach programmation asynchrone en JavaScript ?
A. Event Loop
10. Quels événements sont liés aux clics de souris B. Call Stack
? C. Promise Queue
A. click D. Heap
B. dblclick
C. contextmenu 19. Lesquels de ces opérateurs sont spécifiques à
D. mouseover ES2020 et ES2021 ?
A. ** (exponentiation)
11. Quels opérateurs comparent strictement sans B. ?? (nullish coalescing)
conversion de type ? C. ?. (optional chaining)
A. == D. :: (inexistant standard)
B. ===
20. Lesquels de ces objets sont des collections 29. Lesquels de ces statements contrôlent le flux
introduites en ES6 ? conditionnel ?
A. Map A. if / else
B. Set B. switch / case
C. WeakMap C. for / while
D. WeakSet D. throw / catch
21. Lesquels de ces mots-clés sont des 30. Lesquelles de ces méthodes peuvent ajouter
instructions de saut ? des éléments à un tableau ?
A. break A. push()
B. continue B. unshift()
C. exit C. concat()
D. return D. slice()
22. Lesquelles de ces lignes sont correctes pour 31. Lesquels de ces mots-clés JavaScript sont liés
convertir une chaîne en nombre ? à la programmation orientée objet (ES6) ?
A. Number("42") A. class
B. parseInt("42") B. extends
C. "42" * 1 C. super
D. toInteger("42") D. prototype
23. Quels objets permettent de stocker des paires 32. Lesquels de ces objets sont des constructeurs
clé-valeur ? natifs en JavaScript ?
A. Object A. Array
B. Map B. Object
C. WeakSet C. Function
D. WeakMap D. React
24. Lesquelles de ces syntaxes sont valides pour 33. Lesquelles de ces méthodes peuvent
une fonction fléchée ? transformer un tableau en chaîne de
A. () => {} caractères ?
B. (x) => x * 2 A. join()
C. (x, y) => { return x + y } B. toString()
D. x => { x * 2 } (piège : manque le return) C. pop()
D. toLocaleString()
25. Lesquels de ces éléments sont utilisés pour la
gestion des modules en JavaScript ? 34. Lesquels de ces mots-clés gèrent
A. import l’asynchronisme par promesses ?
B. require (CommonJS côté Node.js) A. async
C. export B. await
D. module.exports (CommonJS) C. then
D. sync
26. Lesquels de ces types de données sont
immuables ? 35. Lesquels de ces éléments sont nécessaires
A. string pour écouter un événement en DOM ?
B. boolean A. Élément cible
C. object B. Type d’événement (ex: click)
D. number C. Gestionnaire de rappel (callback)
D. return
27. Dans un try...catch, que se passe-t-il si le try ne
lève aucune exception ? 36. Lesquels de ces types de boucles permettent
A. Le catch est ignoré de parcourir un tableau directement ?
B. Le catch est exécuté quand même A. for
C. Le code se poursuit normalement B. for...in (plutôt pour objets)
D. Une erreur est levée si aucun finally C. for...of
D. while
28. Lesquels de ces événements JavaScript sont
liés au clavier ? 37. Lesquels de ces éléments sont spécifiques aux
A. keydown classes en ES6 ?
B. keypress A. Constructeur constructor
C. keyup B. Méthodes statiques static
D. onload C. Héritage via extends
D. Héritage multiple natif
38. Lesquels de ces frameworks ou bibliothèques C. document
sont basés sur JavaScript (hors Node.js) ? D. JSON
A. React
B. Angular 45. Quelles syntaxes sont valides pour déclarer
C. Vue.js une fonction nommée ?
D. Django A. function maFonction() {}
B. maFonction = () => {} (variable ou fonction
39. Lesquels de ces mots-clés sont valides pour la fléchée)
déclaration d’une variable en ES5 et ES6 ? C. function() => {} (invalide)
A. var (ES5) D. let maFonction = function(){}
B. let (ES6)
C. const (ES6) 46. Lesquels de ces aspects concernent la
D. final “portée” (scope) en JavaScript ?
A. Portée globale
40. Lesquelles de ces méthodes sont utilisées B. Portée de bloc avec let
pour parcourir un tableau et peuvent renvoyer C. Portée de fonction avec var
un nouveau tableau ? D. Portée d’objet
A. map()
B. filter() 47. Lesquelles de ces syntaxes permettent de faire
C. reduce() (retourne une valeur unique) un commentaire en JavaScript ?
D. forEach() (ne renvoie pas de nouveau tableau) A. // commentaire
B. /* commentaire */
41. Lesquels de ces opérateurs comparent en C. <!-- commentaire --> (plutôt HTML)
incluant une conversion de type ? D. # commentaire (style de commentaire en
A. == Python)
B. ===
C. != 48. Lesquels de ces éléments peuvent être passés
D. !== comme paramètres à une fonction ?
A. Des nombres
42. Lesquels de ces objets appartiennent à l’API B. Des chaînes
Web Storage ? C. Des objets
A. sessionStorage D. D’autres fonctions
B. localStorage
C. cookieStorage (n’existe pas) 49. Lesquelles de ces méthodes peuvent trier un
D. indexedDB (API de stockage, mais différent) tableau ?
A. sort()
43. Quels éléments de syntaxe permettent d’écrire B. reverse() (inverse l’ordre, pas un tri
une chaîne multi-ligne ? sémantique)
A. Backticks (templates strings) `` B.\ndans une C. order() (inexistant)
chaîne simple C."""triple-quote (inexistant en JS) D. localeCompare() (méthode de string, pas
D.+` pour concaténer d’array)
44. Lesquels de ces objets sont natifs du moteur 50. Quels mécanismes permettent la gestion
JavaScript (ECMAScript) et non spécifiques au asynchrone en JavaScript ?
DOM ? A. Callbacks
A. Math B. Promises
B. Date C. Async/await
D. Threads multiples par défaut
58. (CU) En CommonJS, si on veut exporter 66. (CU) Comment appelle-t-on la syntaxe
plusieurs choses, on peut faire : (function(){ ... })() dans la documentation ?
A. exports.obj = { ... }; exports.func = function(){}; A. Arrow expression
B. module.exports = { obj: ..., func: ... }; B. IIFE (Immediately Invoked Function Expression)
C. export default { obj, func }; C. Async closure
D. module.exportMany(...) D. Module pattern
59. (CU) La méthode Array.prototype.reduce() 67. (CU) Dans une fonction async, utiliser throw
prend combien de paramètres pour la fonction new Error("...") :
de rappel ? A. Rejette la promesse retournée
A. 1 (l’élément courant) B. Résout la promesse avec un objet Error
B. 2 (l’accumulateur et l’élément courant) C. Interrompt l’exécution sans effet sur la
C. 4 (accumulateur, valeur courante, index, promesse
tableau) D. Génère un warning sans stopper l’exécution
D. 3 (accumulateur, valeur courante, tableau)
68. (CU) Pour collecter tous les exports d’un
60. (CU) Comment s’appelle le “style” d’écriture module ESM dans un objet, on écrit :
JavaScript sans framework, ni librairie A. import * from "module"
spécifique ? B. import * as obj from "module"
A. Node.js core C. import { ...all } from "module"
B. ES6 standard D. import { default as obj } from "module"
C. Vanilla JS
D. Pure ECMAScript 69. (CU) Array.prototype.every() retourne true si :
A. Au moins un élément satisfait la condition
61. (CU) Quelle clause permet de capturer une B. Tous les éléments satisfont la condition
erreur dans un bloc try ? C. Aucun élément ne satisfait la condition
A. catch D. Le tableau est vide
B. error
C. finally 70. (CU) La forme (function myIIFE(){ ... }()) est :
D. rescue A. Une fonction nommée IIFE
B. Impossible, lève une erreur
62. (CU) Dans une fonction fléchée à un seul C. Un module ESM
paramètre, que peut-on omettre ? D. Un alias de la fonction fléchée
A. Les parenthèses autour du paramètre
B. Le mot-clé function 71. (CU) Dans une fonction fléchée () => ({ x: 1 }), à
C. Le return si on met des accolades quoi servent les parenthèses autour du bloc {
D. Les accolades si on renvoie directement une x: 1 } ?
valeur A. À retourner un objet littéral
B. À créer un bloc de code vide
63. (CU) Dans un générateur, comment C. À ignorer la valeur
transmettre une valeur externe lors de l’appel D. À activer le mode strict
next() ?
A. generator.send(value) 72. (CU) Quel est le cycle de vie d’un générateur ?
B. generator.next(value) A. start -> run -> complete -> restart
B. suspendedStart -> executing ->
suspendedYield -> completed B. window.maIIFE = (function(){...})(); (en
C. Il ne peut jamais compléter navigateur)
D. pending -> fulfilled -> rejected C. export IIFE
D. module.exports = IIFE
73. (CU) Dans Node.js, comment activer l’ESM
sans package.json "type": "module" ? 82. (CU) Dans un générateur, appeler deux fois
A. Utiliser l’extension .mjs next() de suite sans yield entre-temps :
B. Mettre "moduleMode": true A. Fait avancer deux fois la machine d’état
C. Passer un flag --commonjs B. Lève une exception
D. On ne peut pas C. Met le générateur en pause
D. Donne toujours done: true
74. (CU) Quelle méthode d’Array coupe un tableau
en plusieurs morceaux qu’elle retourne 83. (CU) Que fait la méthode Object.freeze(obj) ?
comme sous-tableaux ? A. Rend les propriétés de obj modifiables
A. slice() uniquement en lecture
B. splice() B. Transforme obj en null
C. split() (non, c’est string) C. Rend obj immuable (pas de modifications
D. Il n’y a pas de méthode native possibles)
D. Copie obj dans un nouvel objet
75. (CU) Dans une IIFE, pour exposer certaines
fonctionnalités, on utilise souvent : 84. (CU) Dans un script ESM, import "./module.js";
A. Un return d’un objet public sans accolades ni nom :
B. Un window.myGlobal = ... A. Importe le module par défaut
C. module.exports B. N’importe rien, mais exécute le fichier
D. export default module.js
C. Est invalide en ES
76. (CU) Dans un async function, quand on fait D. Importe tous les exports nommés
return await X;, c’est équivalent à :
A. return X; (sauf si on veut capturer l’erreur) 85. (CU) La méthode Array.prototype.every() :
B. throw X; A. Retourne true si tous les éléments passent le
C. return Promise.all([X]); test
D. return new Promise(X); B. Retourne un nouveau tableau
C. Se termine dès qu’un élément échoue au test
77. (CU) Dans un générateur, la forme yield* D. Lance une exception si le test échoue
autreGenerateur() signifie :
A. Qu’on concatène les valeurs des deux 86. (CU) Comment appelle-t-on l’opérateur ... dans
générateurs (a, b, ...rest) => {} ?
B. Qu’on délègue l’itération à autreGenerateur() A. Spread operator
C. Qu’on exécute en parallèle deux générateurs B. Rest parameter
D. Qu’on crée un objet Promise C. Template operator
D. Destructuring operator
78. (CU) CommonJS est le format de modules
historique de : 87. (CU) Lorsqu’une fonction génératrice est
A. Node.js “complétée”, generator.next() renvoie :
B. Les navigateurs A. { value: undefined, done: true }
C. ECMAScript 2015 B. Un objet Promise
D. AMD C. Une erreur StopIteration
D. { value: null, done: false }
79. (CU) array.reduce((acc, val) => acc + val, 0) fait :
A. La somme des éléments du tableau 88. (CU) CommonJS supporte quel type d’import ?
B. La concaténation des éléments A. import ... from "..."
C. Filtre les éléments nuls B. require("...")
D. Crée un objet C. import { ... }
D. module import
80. (CU) Quelle expression fléchée ne renvoie pas
undefined par défaut ? 89. (CU) Sur un tableau [10, 20, 30],
A. () => { 42 } myArray.some(x => x > 15) renvoie :
B. () => 42 A. true
C. (x) => { x + 1 } B. false
D. () => { return } C. undefined
D. Erreur
81. (CU) Dans une IIFE, comment rendre la
fonction disponible globalement ? 90. (CU) L’IIFE (function namedIIFE() { ... }()) se
A. var maIIFE = function(){...}() différencie de (function() { ... })() par :
A. Le fait qu’elle a un nom local qu’on peut A. () => { key: "value" }
appeler en récursif B. () => ({ key: "value" })
B. Une syntaxe non valide en JS C. () => "key": "value"
C. Une exécution bloquante D. function => { key: "value" }
D. Une portée globale
96. (CU) (() => { console.log("Hello"); })() est un
91. (CU) Dans async function x() { return "ok"; }, x() exemple de :
renvoie : A. Fonction auto-invoquée fléchée
A. Une promesse résolue avec "ok" B. IIFE standard
B. La chaîne "ok" directement C. Module ESM
C. Une erreur D. Méthode asynchrone
D. Un générateur
97. (CU) Une fonction async peut contenir :
92. (CU) Que fait la méthode A. Des mots-clés await
generator.throw(error) ? B. Des boucles for, while
A. Lance une exception depuis le générateur à C. Des instructions return
l’endroit du dernier yield D. Un objet Promise implicite
B. Redémarre le générateur depuis le début
C. Met le générateur en pause 98. (CU) Dans un générateur, comment récupérer
D. Transforme l’erreur en warning la valeur finale après return ?
A. Par generator.value
93. (CU) Dans un module CommonJS, B. Par generator.returnValue
require.cache contient : C. Via l’objet { value, done } de next()
A. Les données chargées depuis les modules D. On ne peut pas la récupérer
B. Les chemins de modules résolus
C. Les modules déjà chargés pour éviter de les 99. (CU) Lequel n’est pas un export valide en ESM ?
recharger A. export const MY_VAR = 42;
D. Un tampon vide B. export function doStuff() {}
C. export default function() {}
94. (CU) array.reduce((acc, val) => acc + val) sans D. module.export = ...
second argument :
A. Utilise 0 comme accumulateur initial 100. (CU) Dans l’écosystème JavaScript, “Vanilla
B. Utilise le premier élément comme JS” signifie :
accumulateur initial A. Un nouveau framework minimaliste
C. Lève une erreur B. Du JavaScript natif sans librairie tierce
D. Utilise null comme accumulateur C. Du code Node.js
D. Une architecture React custom
95. (CU) Dans une fonction fléchée, comment
renvoyer un objet littéral ?
Partie 4 : 20 Questions à Choix Unique (suite)
12. (CU) En ESM, comment importer un export par 21. Dans le DOM, quelle méthode renvoie le premier
défaut et d’autres membres nommés ? élément correspondant à un sélecteur CSS ?
A. import default, { named1, named2 } from A. document.getElementById()
"module"; B. document.querySelector()
B. import { default, named } from "module"; C. document.querySelectorAll()
C. import default, named from "module"; D. document.getElementsByClassName()
D. import default * from "module";
22. Dans un document HTML, la propriété
13. (CU) Array.prototype.some() renvoie true document.body fait référence :
quand : A. À l’élément <head>
A. Tous les éléments passent le test B. À l’élément <html>
B. Au moins un élément passe le test C. À l’élément <body>
C. Aucun élément ne passe le test D. À tous les éléments <div>
D. Le tableau est vide
23. Quelle est la bonne syntaxe pour ajouter un
14. (CU) (() => 42)() retourne : écouteur d’événement “click” sur un bouton en
A. 42 JavaScript Vanilla ?
B. undefined A. button.addListener("click", function() { ... });
C. Une Promise B. button.on("click", function() { ... });
D. Un générateur C. button.addEventListener("click", function() { ... });
D. addEvent(button, "click", fn);
15. (CU) Dans une IIFE, var x = 10;, que devient x
après exécution ? 24. (CU) Dans une page HTML, le DOM est entièrement
A. Global si on n’est pas en mode strict chargé. Quel événement du document peut-on écouter
pour exécuter du code après le parsing initial du HTML 32. (CU)Dans les événements DOM, l’objet
? event.target pointe vers :
A. load A. L’élément sur lequel l’écouteur a été attaché
B. DOMContentLoaded B. L’élément qui a réellement déclenché l’événement
C. onready C. L’objet global document
D. beforeunload D. La fenêtre window
25. (CU)Dans un script JavaScript, l’accès à 33. (CU)Quelle propriété du DOM permet de lire ou
document.querySelectorAll("p") renvoie : modifier le code HTML interne d’un élément ?
A. Un tableau standard A. element.innerHTML
B. Un objet NodeList B. element.value
C. Une HTMLCollection C. element.textContent
D. Une exception si le sélecteur est multiple D. element.htmlContent
Pour itérer sur les propriétés énumérables d’un objet 52. (CU)
en JavaScript, on utilise :
Pour créer un nœud texte dans le DOM, on utilise :
A. for...of
A. document.createTextNode("du texte")
B. for...in
B. new Text("du texte")
C. Object.forEach()
C. document.innerText = "du texte"
D. obj.traverse()
D. document.makeText("du texte")
45. (CU)Dans un contexte Node.js, si on veut exporter
53. (CU)Comment annuler l’action par défaut (ex: suivi
plusieurs éléments dans un module CommonJS, on
du lien) dans un gestionnaire d’événement DOM ?
peut faire :
A. event.stopPropagation()
A. module.exports = { fonction1, fonction2 };
B. event.preventDefault()
B. exports.fonction1 = ...; exports.fonction2 = ...;
C. return false (fonctionne partiellement dans jQuery,
C. export { fonction1, fonction2 }
pas standard)
D. module.importAll = { ... }
D. event.cancelBubble = true
46. (CU)Une fonction auto-invoquée (IIFE) est souvent
utilisée pour :
A. Déclarer des variables globales persistantes 54. (CU)Dans un module CommonJS, la variable qui
B. Éviter la pollution de l’espace global et isoler un référence l’objet d’exports est :
scope A. module.exports
C. Gérer l’asynchronisme avec await B. export default
D. Charger un module ESM C. this.exports
D. Common.exports
47. (CU)Comment définit-on une fonction génératrice
? 55. (CU)Une fonction fléchée “courte” s’écrit :
A. function gen() { yield ... } A. () -> 42
B. function* gen() { ... } B. ( => 42 )
C. generate function() { ... } C. () => 42
D. (function()*) { yield ... } D. {} => { return 42 }
79. (CU)Dans un générateur, yield* est appelé “yield 88. (CU)Dans le DOM, la propriété nodeType d’un
delegate”. Cela signifie : nœud permet de :
A. On délègue l’itération à un autre itérable ou un autre A. Savoir si c’est un élément, un texte, un
générateur commentaire, etc.
B. On double la valeur du yield B. Modifier la classe CSS
C. On arrête la boucle C. Obtenir la valeur du type d’un <input>
D. On effectue du recouvrement d’exception D. Charger un module ESM
94. (CU)À l’intérieur d’une fonction fléchée, le mot-clé 100. (CU)Dans le DOM,
arguments : document.createElement("script") :
A. Fonctionne comme dans une fonction classique A. Ajoute un <script> dans la page directement
B. Est non défini (inexistant) B. Crée un élément <script> qu’on doit encore attacher
C. Correspond au tableau des paramètres rest au DOM
D. Pointeur vers le global C. Ne fonctionne qu’avec type="module"
D. Lance l’exécution du script immédiatement
95. (CU)Un module ESM peut avoir :
A. Plusieurs exports nommés
1. (CM) Quelles syntaxes sont valides pour créer C. CommonJS est standard ECMAScript, ESM non
une IIFE ? D. ESM supporte import/export, CommonJS
A. (function() { ... })(); utilise module.exports
B. (() => { ... })();
C. function iife() { ... } iife(); 4. (CM) Les méthodes d’Array qui ne modifient
D. function() { ... }() (invalide seul) pas le tableau original sont :
A. map()
2. (CM) Dans un générateur, quelles instructions B. filter()
peuvent coexister ? C. slice()
A. yield D. pop()
B. return
C. break 5. (CM) Lesquelles de ces syntaxes concernent
D. yield* une fonction fléchée ?
A. const f = () => {};
3. (CM) Quelles sont les différences entre B. (x) => x * 2
CommonJS et ESM ? C. function => { ... } (invalide)
A. CommonJS utilise require, ESM utilise import D. () => ({ a: 1 })
B. CommonJS charge de façon synchrone, ESM
peut charger de façon asynchrone
6. (CM) Lesquels de ces mots-clés sont liés à B. Ils utilisent module.exports ou exports pour exporter
l’asynchronisme en JavaScript ?
A. async C. Ils sont nativement supportés par tous les
B. await navigateurs modernes sans build
C. promise (pas un mot-clé, mais un concept)
D. Ils fonctionnent historiquement avec Node.js
D. defer (attribut HTML, pas JavaScript)
10. (CM) Dans une fonction génératrice, on peut : D. keypress (lié au clavier)
A. Utiliser yield plusieurs fois
B. Utiliser return pour terminer
C. Appeler next() en dehors pour avancer
16. (CM) Lesquelles de ces méthodes ne modifient
D. Définir super() (non, c’est dans une classe)
pas le tableau original ?
11. (CM) Quelles syntaxes du DOM permettent
A. map()
d’écouter un événement ?
B. filter()
A. element.addEventListener("click", fn)
C. sort() (modifie sur place)
B. element.onclick = fn
D. slice()
C. document.on("click", fn) (pas standard)
B. throw() lance une exception à l’intérieur du D. Aucun return explicite si on place le bloc entre { } (ce
générateur bloc nécessite return)
D. return() émet une dernière valeur dans le flux 18. (CM) En JavaScript, l’asynchronisme peut être
géré par :
A. Les callbacks
13. (CM) Les modules CommonJS ont les
caractéristiques suivantes : B. Les promesses
B. filter()
19. (CM) Quelles de ces syntaxes importent des C. reduce() (prend (acc, val, idx, arr))
membres nommés en ESM ?
D. forEach()
A. import { a, b } from "module";
20. (CM) Lesquels de ces event.preventDefault() et D. Repartir du début quand on appelle next() (non, on
event.stopPropagation() sont corrects ? reprend où on s’était arrêté)
C. stopPropagation() annule aussi l’action par défaut A. CommonJS (non, nécessite un bundler ou Node)
22. (CM) Lesquels de ces objets DOM sont des D. Être toujours asynchrones
collections dynamiques (se mettent à jour si le DOM
change) ?
27. (CM) Dans le DOM, pour créer et insérer un
A. document.getElementsByTagName("div")
nouveau <li> dans une <ul>, on peut :
(HTMLCollection dynamique)
A. document.createElement("li")
B. document.querySelectorAll("div") (NodeList
statique) B. ul.appendChild(li)
23. (CM) Lesquelles de ces méthodes de tableau 28. (CM) Lesquels de ces éléments sont
prennent un callback (element, index, array) ? typiquement “falsy” en JavaScript ?
A. 0 B. require.resolve("module") donne le chemin résolu
du module
B. NaN
C. module.exports = ... définit l’export principal
C. "" (chaîne vide)
D. import { ... } from "module"; est la syntaxe par défaut
D. null (non, c’est ES Module)
29. (CM) Dans un événement DOM, event.target et 34. (CM) Pour transformer une liste d’arguments en
event.currentTarget peuvent différer quand : tableau dans une fonction classique, on peut :
A. On a un mécanisme de bouillonnement (un enfant a A. Array.prototype.slice.call(arguments)
déclenché l’événement, le parent l’a écouté)
B. Array.from(arguments)
B. L’élément courant n’est pas l’initiateur de
l’événement C. [...arguments]
30. (CM) Lesquels de ces prototypes sont natifs en A. (function() { ... })();
JavaScript ?
B. (function named() { ... }());
A. Object.prototype
C. +function() { ... }();
B. Array.prototype
D. ()=>{ ... }(); (besoin de parenthèses ( () => {...} )();)
C. String.prototype
D. Number.prototype
36. (CM) Lesquelles de ces opérations DOM sont
possibles ?
A. (a, b) => a + b
33. (CM) Dans un contexte Node.js (CommonJS) :
B. () => { const x = 1; return x; }
A. require.cache stocke les modules déjà chargés
C. (a = 0) => a * 2
A. Un Array B. location.reload()
B. Un Map C. location.pathname
C. Un NodeList (depuis ES6, NodeList est itérable dans D. location.document (n’existe pas)
la plupart des navigateurs modernes)
A. exports.maFonction = ...;
50. (CM) Lesquelles de ces méthodes d’un tableau B. Supporte le code HTML pour l’affichage
JS retournent une valeur unique plutôt qu’un
C. Est dangereux si on met du HTML non maîtrisé
nouveau tableau ?
(risque XSS)
A. reduce()
D. Ne modifie pas le DOM visuellement
B. find()
C. includes()
56. (CM) Lesquels de ces appels renvoient un objet
D. map() (retourne un tableau) Promise en JavaScript moderne ?
A. fetch("url")
51. (CM) Dans un générateur, on peut utiliser : B. async function x() {} (appeler x() retourne une
promise)
A. yield x
C. new Promise((resolve, reject) => {})
B. yield* autreGenerateur
D. setTimeout(fn, 1000) (ne renvoie pas de promise
C. next(yield 5) (pas la syntaxe habituelle, mais on peut nativement)
faire let val = yield 5;)
A. Renvoie 10
52. (CM) Lesquels de ces objets existent en
JavaScript Vanille (natif) ? B. Est une IIFE fléchée
A. Event
53. (CM) Lesquels de ces attributs sont valides sur
un <script> en HTML ? B. Element
A. src="fichier.js" C. Node
54. (CM) Lesquels de ces “events” DOM sont liés à A. De passer la valeur x au dernier yield suspendu
la souris ?
B. De renvoyer une promise
A. click
C. De générer un événement de type x
B. dblclick
D. D’avancer l’itération d’un pas
C. mousedown, mouseup
60. (CM) Lesquels de ces modules sont pris en B. map() (non, pas sur un NodeList standard)
charge par Node.js sans config ?
C. [...NodeList] (spread possible si l’environnement est
A. CommonJS (require()) compatible)
B. ESM (avec "type": "module" ou .mjs) D. for (const node of NodeList) (itération possible)
C. AMD
D. splice() (retourne les éléments supprimés) 67. (CM) Lesquels de ces objets JavaScript sont
nativement itérables ?
64. (CM) Lesquels de ces éléments font partie du A. Importer des modules via import
cycle de vie des événements DOM ?
B. Utiliser await en haut niveau (top-level await,
A. Phase de capture dépend de la version de la spécification)
71. (CM) Dans le DOM, quelles méthodes insèrent 76. (CM) Lesquelles de ces méthodes de table
réellement un nœud dans la page ? peuvent retourner un booléen ?
A. appendChild() A. some()
B. insertBefore() B. every()
C. replaceChild() C. includes()
D. Angular (framework complet, DOM virtuel aussi, D. yield attend la fin de l’autre générateur
binding)
C. import { default } from "module"; (mauvaise syntaxe, D. ul.find("li") (n’existe pas en vanilla JS)
c’est import defaultExport from "module")
A. Renvoient un booléen
91. (CM) Lesquels de ces appels sur un objet B. Acceptent un callback (element, index, array)
Promise sont corrects ?
C. Parcourent tout le tableau sauf si la condition est
A. promise.then(onFulfilled) déjà déterminée (court-circuit)
C. promise.finally(onFinally)
D. promise.next() (c’est pour les générateurs, pas pour 97. (CM) Dans le DOM, quelles sont des méthodes
les promesses) pour insérer du texte ou du HTML ?