Questions et réponses : JavaScript & TypeScript

Révisez le thème JavaScript & TypeScript : voici une sélection de questions de tous niveaux, avec la réponse et une explication. Pour vous tester sans voir les réponses, jouez aux quiz.

Jouer aux quiz JavaScript & TypeScript

Facile

En quelle année Brendan Eich a-t-il créé JavaScript chez Netscape ?

Réponse : 1995

Brendan Eich a conçu JavaScript en 1995 chez Netscape, en une dizaine de jours. Le langage n'a aucun lien de parenté avec Java, malgré le nom.

Quel mot-clé déclare une variable à portée de bloc, dont on peut changer la valeur ?

Réponse : let

let déclare une variable à portée de bloc, réaffectable. const interdit la réaffectation, et var a une portée de fonction.

Que renvoie typeof appliqué à la chaîne 'abc' en JavaScript ?

Réponse : string

L'opérateur typeof renvoie une chaîne décrivant le type de la valeur : pour une chaîne de caractères, le résultat est string.

Que renvoie l'expression 0 == '0' en JavaScript ?

Réponse : true

L'opérateur == compare après conversion : '0' devient le nombre 0. Avec === les types doivent aussi être identiques, et le résultat serait false.

Quelle propriété donne le nombre d'éléments d'un tableau en JavaScript ?

Réponse : length

La propriété length donne le nombre d'éléments d'un tableau : [1, 2, 3].length vaut 3.

Quelle méthode renvoie le premier élément qui correspond à un sélecteur CSS, comme 'div.carte' ?

Réponse : querySelector

querySelector accepte n'importe quel sélecteur CSS et renvoie le premier élément trouvé, ou null si aucun ne correspond.

Quel est le rôle de addEventListener dans le navigateur ?

Réponse : Enregistrer une fonction appelée quand un événement se produit

addEventListener attache une fonction à un élément pour un type d'événement, comme un clic. Elle est appelée chaque fois que l'événement se produit.

Quelle fonction transforme un objet JavaScript en texte au format JSON ?

Réponse : JSON.stringify

JSON.stringify transforme une valeur JavaScript en texte JSON ; JSON.parse fait l'inverse.

Moyen

Quelle version d'ECMAScript a introduit let, const, les fonctions fléchées et les classes ?

Réponse : ES6 (ECMAScript 2015)

ES6, publié en 2015, a introduit let et const, les fonctions fléchées et les classes.

Qu'affiche console.log(x) placé avant la ligne var x = 5 dans le même script ?

Réponse : undefined

Avec var, la déclaration remonte (hoisting) mais pas l'affectation : x existe déjà, avec la valeur undefined. Avec let, le même accès lève une ReferenceError.

Dans une fonction fléchée, à quoi correspond this ?

Réponse : À celui de la fonction englobante, défini à l'endroit où la fonction est écrite

Une fonction fléchée n'a pas de this propre : elle reprend celui de l'endroit où elle est définie.

Qu'appelle-t-on une closure en JavaScript ?

Réponse : Une fonction qui conserve l'accès aux variables de la portée où elle a été créée

Une closure garde l'accès aux variables de la fonction englobante, même après la fin de l'exécution de cette dernière.

Quelle valeur JavaScript indique qu'une variable a été déclarée mais n'a reçu aucune valeur ?

Réponse : undefined

undefined est la valeur d'une variable déclarée sans affectation. null représente une absence de valeur choisie explicitement par le programmeur.

Que renvoie [1, 2, 3, 4].filter(n => n % 2 === 0) ?

Réponse : [2, 4]

filter garde les éléments pour lesquels la fonction renvoie true : ici les nombres pairs.

Que renvoie Promise.resolve(5).then(x => x * 2) ?

Réponse : Une promesse qui sera résolue avec la valeur 10

La valeur de résolution du then est le résultat de la fonction de rappel : ici 5 multiplié par 2, soit 10.

Que renvoie une fonction marquée async en JavaScript ?

Réponse : Toujours une promesse

Une fonction async renvoie toujours une promesse : la valeur de return est enveloppée, et une exception devient un rejet.

Difficile

En quelle année Microsoft a-t-il publié la première version de TypeScript ?

Réponse : 2012

TypeScript, dirigé par Anders Hejlsberg, est publié par Microsoft en octobre 2012 : c'est un surensemble typé de JavaScript.

Quelle différence sépare any et unknown dans TypeScript ?

Réponse : Une valeur unknown doit être vérifiée avant usage, alors que any désactive cette vérification

any désactive la vérification de types sur la valeur. unknown oblige à restreindre le type avant tout usage, ce qui protège le code.

Que fait le paramètre de type T dans function identite<T>(x: T): T ?

Réponse : Il conserve le type de l'argument reçu et le renvoie tel quel

T est une variable de type : TypeScript la déduit de l'argument à chaque appel, ce qui garde le type précis du résultat.

En TypeScript, sur quoi repose la compatibilité entre deux types d'objets ?

Réponse : Par la structure : ce que l'objet possède compte, pas le nom déclaré

TypeScript est structurel : un objet est compatible s'il possède les propriétés attendues avec les bons types, même sans déclaration explicite.

Entre deux tâches, quelle file la boucle d'événements vide-t-elle entièrement avant de passer à la suivante ?

Réponse : La file des microtâches, comme les promesses

Les rappels des promesses forment la file des microtâches, que la boucle vide entièrement entre deux tâches. Les macrotâches, comme setTimeout, sont traitées une par une.

Quand la propriété d'un objet JavaScript est absente, où le moteur la cherche-t-il ensuite ?

Réponse : Dans le prototype de l'objet, puis dans la chaîne de prototypes

La recherche remonte la chaîne de prototypes. Si la propriété n'existe nulle part, la valeur lue est undefined, sans erreur.

Quelle option de tsconfig.json active d'un coup l'ensemble des contrôles stricts ?

Réponse : strict

strict: true active notamment strictNullChecks et noImplicitAny. Chacune de ces options peut aussi être réglée séparément.

Quel outil installe les dépendances listées dans le fichier package.json d'un projet Node.js ?

Réponse : npm

npm lit le fichier package.json et installe les dépendances dans le dossier node_modules.

Thèmes proches

Jouer aux quiz JavaScript & TypeScript