Sobes.tech
Junior

Hogyan működik a verstack a JavaScriptben?

sobes.tech MI

Válasz az MI-től

A hívási verem (Call Stack) egy adatszerkezet, amely nyomon követi a függvények végrehajtását. Amikor egy függvényt hívnak, az a verem tetejére kerül. Amikor a függvény befejeződik, eltávolítják a veremből. A JavaScript egyszálú, ezért egyetlen hívási verem van.

Fő műveletek:

  • Push: Egy függvény hozzáadása a verem tetejére.
  • Pop: Egy függvény eltávolítása a verem tetejéről.

Példa:

// Az A függvény meghívja a B függvényt
function A() {
  B(); // B a veremre kerül
  console.log('A kész'); // Amikor B befejeződik, az A folytatódik
}

// A B függvény meghívja a C függvényt
function B() {
  C(); // C a veremre kerül
  console.log('B kész'); // Amikor C befejeződik, B folytatódik
}

// A C egyszerűen kiírja a konzolra
function C() {
  console.log('C kész'); // C befejeződik, eltávolítják a veremből
}

A(); // A meghívása. A a veremre kerül.
// Verem: [A] -> [A, B] -> [A, B, C] -> [A, B] -> [A] -> []

Verem követése:

Művelet Verem
A() hívására [A]
B() hívására [A, B]
C() hívására [A, B, C]
C() befejeződik [A, B]
B() befejeződik [A]
A() befejeződik []

A verem túlcsordulási hibák akkor fordulnak elő, amikor a verem túl sok hívással töltődik meg (például végtelen rekurzió esetén), és nem tud új függvényeket hozzáadni.