Call Stack

JavaScript 🟢 Junior

Définition

Pile LIFO (Last In, First Out) qui trace les contextes d'exécution des fonctions en cours. Chaque appel de fonction empile un frame, chaque return le depile.

Analogie

Une pile d'assiettes : tu poses la dernière en haut et tu reprends toujours celle du dessus.

Exemple de code

function a() { b(); }
function b() { c(); }
function c() { console.trace(); }
a();
// c -> b -> a -> global

Cas d'usage

Lire les stack traces d'erreurs et comprendre les dépassements de pile (stack overflow).

Anti-pattern

Récursion infinie sans condition d'arrêt qui provoque un Maximum call stack size exceeded.
#core#interview#debug

En entretien

  1. C'est quoi la call stack ?

    C'est une pile LIFO qui trace les contextes d'exécution des fonctions en cours : chaque appel empile un frame, chaque return le dépile. C'est comme une pile d'assiettes, tu reprends toujours celle du dessus en premier.

  2. Comment tu lirais une stack trace d'erreur grâce à ça ?

    La trace montre l'ordre des appels empilés, comme dans l'exemple a() qui appelle b() qui appelle c(), donc console.trace() affiche c -> b -> a -> global. Ça permet de remonter jusqu'à l'origine de l'appel qui a causé l'erreur.

  3. Qu'est-ce qui provoque un 'Maximum call stack size exceeded' ?

    Une récursion infinie sans condition d'arrêt, qui empile des frames indéfiniment jusqu'à dépasser la taille de la pile. C'est l'anti-pattern classique à surveiller dans toute fonction récursive.

Fiche mise à jour le 2026-09-27

← → au clavier pour passer d'une fiche à l'autre