Sobes.tech
Junior

Kako funkcioniše stek u JavaScriptu?

sobes.tech АИ

Одговор од АИ

Stek poziva (Call Stack) je struktura podataka koja prati izvršavanje funkcija. Kada se funkcija pozove, ona se postavlja na vrh steka. Kada funkcija završi, uklanja se sa steka. JavaScript je jednostran, pa ima jedan stek poziva.

Glavne operacije:

  • Push: Dodavanje funkcije na vrh steka.
  • Pop: Uklanjanje funkcije sa vrha steka.

Primer:

// Funkcija A poziva funkciju B
function A() {
  B(); // B se postavlja na stek
  console.log('A završena'); // Kada B završi, A nastavlja
}

// Funkcija B poziva funkciju C
function B() {
  C(); // C se postavlja na stek
  console.log('B završena'); // Kada C završi, B nastavlja
}

// Funkcija C jednostavno ispisuje u konzolu
function C() {
  console.log('C završena'); // C završava, uklanja se sa steka
}

A(); // Poziv A. A se postavlja na stek.
// Stek: [A] -> [A, B] -> [A, B, C] -> [A, B] -> [A] -> []

Praćenje steka:

Akcija Stek
A() se pozove [A]
B() se pozove [A, B]
C() se pozove [A, B, C]
C() se završava [A, B]
B() se završava [A]
A() se završava []

Greške prelivanja steka (Stack Overflow) javljaju se kada se stek prepunjava prevelikim brojem poziva (npr. u beskonačnoj rekurziji) i ne može da doda nove funkcije.