Sobes.tech
Junior

Чӣ тавр кор мекунад стеки JavaScript?

sobes.tech AI

Ҷавоб аз AI

Ҳамворкунии даъват (Call Stack) структураи маълумотест, ки иҷрои функсияҳоро пайгирӣ мекунад. Вақте ки функсия даъват мешавад, он ба болоии ҳамворкуни ҷойгир мешавад. Вақте ки функсия ба охир мерасад, аз ҳамворкунӣ хориҷ карда мешавад. JavaScript ягона сатрӣ аст, бинобар ин як ҳамворкунии даъват дорад.

Оператсияҳои асосӣ:

  • Push: Илова кардани функсия ба болоии ҳамворкунӣ.
  • Pop: хориҷ кардани функсия аз болоии ҳамворкунӣ.

Масалан:

// Функсия A функсияи B-ро даъват мекунад
function A() {
  B(); // B ба ҳамворкунӣ ҷойгир мешавад
  console.log('A тамом шуд'); // Вақте ки B тамом мешавад, A идома медиҳад
}

// Функсия B функсияи C-ро даъват мекунад
function B() {
  C(); // C ба ҳамворкунӣ ҷойгир мешавад
  console.log('B тамом шуд'); // Вақте ки C тамом мешавад, B идома медиҳад
}

// Функсия C танҳо дар консол менависад
function C() {
  console.log('C тамом шуд'); // C тамом мешавад, аз ҳамворкунӣ хориҷ карда мешавад
}

A(); // Даъвати A. A ба ҳамворкунӣ ҷойгир мешавад.
// Ҳамворкунӣ: [A] -> [A, B] -> [A, B, C] -> [A, B] -> [A] -> []

Таҳлили ҳамворкунӣ:

Ҳаракат Ҳамворкунӣ
A() даъват мешавад [A]
B() даъват мешавад [A, B]
C() даъват мешавад [A, B, C]
C() тамом мешавад [A, B]
B() тамом мешавад [A]
A() тамом мешавад []

Хатогиҳои пуршавии ҳамворкунӣ (Stack Overflow) вақте рӯй медиҳанд, ки ҳамворкунӣ бо шумораи зиёди даъватҳо (масалан, дар рекурсияи беохир) пур мешавад ва наметавонад функсияҳои навро илова кунад.