Javascript
Debutant
Quiz-Javascript-Debutant
Javascript-Variables
Javascript-Types
Javascript-Fonctions
Entretien-Javascript
Questions-Javascript
Qcm-Javascript
Apprendre-Javascript
Revision-Javascript
Es6
Fondamentaux-Js
Front-End
📝
Entretien JavaScript Débutant : variables et syntaxe
20 questions sur les bases JavaScript : var/let/const, types primitifs, opérateurs, fonctions, tableaux et syntaxe ES6 pour un premier entretien dev web.
Banque de révision : les 40 questions corrigées
Voici l'intégralité des 40 questions de « Entretien JavaScript Débutant : variables et syntaxe », chacune avec sa bonne réponse et son explication. Le quiz interactif ci-dessus en tire une sélection aléatoire à chaque tentative — utilisez cette liste complète pour réviser.
Explication :
typeof retourne le type primitif sous forme de chaîne. Pour une chaîne de caractères, JS retourne toujours "string". Les autres types : "number", "boolean", "undefined", "symbol", "bigint", et "function" pour les fonctions.
Explication :
En JavaScript, l'opérateur + avec une chaîne effectue une concaténation, pas une addition. Le nombre
3 est converti en chaîne "3", d'où "23". Pour forcer l'addition : Number("2") + 3 ou +"2" + 3.
Explication :
const déclare une variable dont la référence ne peut pas être réassignée. Attention : pour un objet ou tableau const, son contenu reste modifiable (les propriétés peuvent changer). Seule la réassignation de la variable est interdite.
Explication :
let respecte la portée de bloc : une variable let dans un if ou for n'est accessible que dans ce bloc. var ignore les blocs et remonte à la portée de la fonction englobante. var est aussi hoistée et initialisée à undefined.
Recommandation d'entretien : préfère toujours
const par défaut, let quand la réassignation est nécessaire, et évite var (source de bugs classiques à cause du hoisting et de la portée large).
Explication :
En JavaScript, les indices des tableaux commencent à 0.
arr[0] = premier élément, arr[1] = deuxième, etc. arr.first() et arr.get(0) n'existent pas nativement en JS vanilla.
Explication :
Les valeurs falsy sont :
false, 0, -0, 0n, "" (chaîne vide), null, undefined, NaN. La chaîne "false" est truthy (chaîne non vide). Les tableaux [] et objets {} vides sont aussi truthy.
Explication :
null fait partie des valeurs falsy de JavaScript. Boolean(null) retourne donc false. Cette conversion booléenne est implicite dans les conditions : if (null) → bloc non exécuté.
Explication :
Un objet JS est une collection de propriétés (paires clé-valeur) où les clés sont des chaînes (ou symboles). Syntaxe littérale :
{ nom: "Alice", age: 30 }. Les tableaux ([]) et fonctions sont aussi des objets en JS.
En entretien, mentionne que les fonctions sont des objets de première classe (first-class citizens) : elles peuvent être passées comme arguments, retournées par d'autres fonctions, et stockées dans des variables.
Explication :
L'opérateur ternaire
condition ? valeurSiVrai : valeurSiFaux est l'équivalent compact d'un if/else qui retourne une valeur. Utile pour les assignations conditionnelles : const label = age >= 18 ? 'adulte' => 'mineur';.
Explication :
== utilise la coercition de type (convertit avant de comparer) : 1 == '1' → true. === est l'égalité stricte (aucune conversion) : 1 === '1' → false. Utilisez toujours === pour éviter les comportements inattendus.
Exemples classiques :
0 == false → true, null == undefined → true, mais 0 === false → false. Règle simple : utilise toujours === sauf cas très spécifiques.
Explication :
L’opérateur
+ convertit tout en chaîne si l’un des opérandes est une chaîne. 1 + "1" → "1" + "1" → "11".
Explication :
Array.isArray(variable) retourne true si la variable est un tableau, false sinon. Utile car typeof [] retourne "object".
Préfère
Array.isArray() à instanceof Array car il fonctionne même avec des iframes.
Explication :
Bizarrement,
typeof null retourne "object". C’est un bug historique de JavaScript qui n’a jamais été corrigé pour ne pas casser trop de code.
Pour tester si une valeur est
null, utilise valeur === null.
Explication :
La multiplication force la conversion en nombre.
"a" ne peut pas être converti en nombre → NaN (Not a Number).
Explication :
push() ajoute un ou plusieurs éléments à la fin d’un tableau et retourne la nouvelle longueur. unshift() ajoute au début.
Pour retirer le dernier élément :
pop(). Pour retirer le premier : shift().
Explication :
NaN signifie "Not a Number". Il apparaît quand une opération mathématique échoue (ex: parseInt("abc"), 0/0).
Attention :
NaN === NaN retourne false ! Utilise isNaN(valeur) ou Number.isNaN().
Explication :
undefined est la valeur par défaut d’une variable déclarée mais non initialisée. null est une valeur assignée volontairement pour signifier "rien" (objet inexistant).
En entretien :
typeof undefined → "undefined", typeof null → "object".
Explication :
return termine immédiatement l’exécution de la fonction et peut renvoyer une valeur. Sans return, la fonction retourne undefined.
Explication :
Toute chaîne non vide est truthy.
"false" est une chaîne, donc Boolean("false") → true.
Explication :
Les fonctions fléchées peuvent être écrites de plusieurs manières. Si un seul paramètre, les parenthèses sont optionnelles. Si un seul retour sans accolades, le
return est implicite.
Fonction fléchée avec retour implicite :
const double = x => x * 2.
Explication :
La propriété
length d’un tableau indique le nombre d’éléments qu’il contient. On peut aussi l’assigner pour tronquer un tableau.
Explication :
La double négation
!! convertit une valeur en booléen. "hello" est truthy → !true → false → !false → true.
Raccourci pour convertir n’importe quelle valeur en booléen :
!!valeur.
Explication :
forEach() exécute une fonction sur chaque élément sans retour. map() retourne un nouveau tableau transformé. filter() retourne un tableau filtré. Toutes parcourent le tableau.
Pour une transformation :
map(). Pour un effet de bord : forEach().
Explication :
parseInt() lit les caractères numériques au début de la chaîne jusqu’à rencontrer un caractère non numérique. "10px" → 10.
Attention :
parseInt("10px20") → 10 aussi. Pour flottants : parseFloat().
Explication :
// est le commentaire ligne unique. /* ... */ est le commentaire multi-lignes.
Explication :
L'opérateur
&& (ET logique) retourne true uniquement si les deux conditions sont vraies. 5 > 3 est true mais 2 < 1 est false → résultat false.
Pour qu'un
&& soit vrai, toutes les conditions doivent être vraies.
Explication :
L'opérateur
=== compare valeur ET type. "10" est une chaîne, 10 est un nombre → types différents → false.
Avec
== (égalité faible), "10" == 10 donnerait true car conversion automatique.
Explication :
pop() supprime le dernier élément d'un tableau ET le retourne. shift() supprime le premier élément. push() et unshift() ajoutent des éléments.
Exemple :
const fruits = ["pomme", "banane", "orange"]; fruits.pop(); → tableau devient ["pomme", "banane"].
Explication :
L'opérateur
% (modulo) retourne le reste de la division. 10 ÷ 3 = 3 reste 1. Très utile pour tester si un nombre est pair (n % 2 === 0).
Explication :
>= signifie "supérieur ou égal". > serait "strictement supérieur" (ne passerait pas pour 18). => est la syntaxe des fonctions fléchées, pas une comparaison.
Les opérateurs de comparaison :
> (supérieur), >= (supérieur ou égal),
Explication :
Le hoisting fait que les déclarations
var et les fonctions déclarées avec function sont "remontées" en haut de leur portée. On peut appeler une fonction avant sa déclaration. let et const sont aussi hoistées mais ne sont pas initialisées (TDZ).
C'est pour cela qu'il est recommandé de déclarer toutes les variables en haut de leur portée.
Explication :
Array.isArray() est la méthode fiable pour vérifier si une valeur est un tableau. instanceof Array fonctionne mais peut échouer entre différents contextes d'exécution (iframes).
Ne jamais utiliser
typeof pour tester un tableau : typeof [] retourne "object".
Explication :
for (const element of iterable) { } itère sur les valeurs d'un itérable. Contrairement à for...in qui itère sur les clés/propriétés. Compatible avec tableaux, chaînes, Map, Set, NodeList.
Pour parcourir les propriétés d'un objet littéral, utilisez
for...in ou Object.keys(). for...of ne fonctionne pas directement sur les objets.
Explication :
map() crée un nouveau tableau contenant les résultats de l'appel d'une fonction sur chaque élément. filter() filtre selon une condition. forEach() exécute sans retourner. reduce() accumule.
Chaînez les méthodes :
array.filter(predicat).map(transform). Cela évite les boucles imbriquées.
Explication :
JavaScript convertit automatiquement les valeurs en booléen dans un contexte conditionnel. Valeurs falsy :
false, 0, -0, "", null, undefined, NaN, 0n. Toute autre valeur est truthy (même "false", "0", [], {}). if (variable) teste si la variable est truthy. Pour vérifier spécifiquement null/undefined, utilisez if (variable != null).
Explication :
Les tableaux JavaScript sont indexés à partir de zéro.
array[0] est le premier élément, array[array.length - 1] est le dernier. Depuis ES2022, array.at(-1) donne le dernier. array.at() accepte des indices négatifs : array.at(-1) pour le dernier, array.at(-2) pour l'avant-dernier.
Explication :
Une méthode est simplement une fonction attachée à un objet comme propriété.
obj.maFonction = function() {}. Dans le contexte objet, this fait référence à l'objet propriétaire.
Une méthode est appelée via
objet.methode(), une fonction via fonction().
Explication :
&& (ET logique) retourne true si les deux opérandes sont truthy. || (OU logique), ! (NON logique). Ces opérateurs pratiquent le "court-circuit" : le second opérande n'est évalué que si nécessaire. && retourne la première valeur falsy ou la dernière valeur si toutes sont truthy. Très utilisé en React : {isLogged && }.
Explication :
La portée détermine où une variable peut être utilisée. Portée globale (partout), de fonction (var - dans la fonction), de bloc (let/const - entre accolades
{}).
Préférez la portée la plus réduite possible. Déclarez les variables au plus près de leur utilisation.
Explication :
Les modules ES6 utilisent
import { nom } from "./fichier.js" et export function maFonction() {}. require() est la syntaxe CommonJS (Node.js). import est la syntaxe standard moderne.
N'oubliez pas l'extension
.js dans les imports. En TypeScript ou avec bundlers, l'extension est parfois optionnelle.