JavaScript Callstack: ์คํ ์ปจํ ์คํธ์ ํต์ฌ
์๊ฐ
JavaScript Callstack(ํธ์ถ ์คํ)์ JavaScript ์์ง์ด ํจ์ ์คํ์ ๊ด๋ฆฌํ๋ ๋ฉ์ปค๋์ฆ ์ค ํ๋๋ก, ์ฝ๋์ ์คํ ์ปจํ ์คํธ๋ฅผ ์คํ ํํ๋ก ์ถ์ ํ๋ ๋ฐฉ์์ ๋๋ค. ์ด๋ ํจ์ ํธ์ถ๊ณผ ๋ฐํ์ ๊ด๋ฆฌํ๋ฉฐ, ์ฝ๋์ ์คํ ์์๋ฅผ ๊ฒฐ์ ํฉ๋๋ค.
JavaScript Callstack์ ์ญํ
1. ํจ์ ํธ์ถ๊ณผ ๋ฐํ ๊ด๋ฆฌ
Callstack์ ํจ์๊ฐ ํธ์ถ๋ ๋ ํด๋น ํจ์๋ฅผ ์คํ์ ์๊ณ , ํจ์์ ์คํ์ด ์๋ฃ๋๋ฉด ์คํ์์ ์ ๊ฑฐํฉ๋๋ค. ์ด๋ฅผ ํตํด ํ์ฌ ์ด๋ค ํจ์๊ฐ ์คํ ์ค์ธ์ง ์ถ์ ํ ์ ์์ต๋๋ค.
2. ์คํ ์ปจํ ์คํธ ๊ด๋ฆฌ
๊ฐ ํจ์ ์คํ์ ๋ํ ์คํ ์ปจํ ์คํธ๋ฅผ ์์ฑํ๊ณ ๊ด๋ฆฌํฉ๋๋ค. ์คํ ์ปจํ ์คํธ๋ ๋ณ์, ํจ์ ์ ์ธ ๋ฑ์ ์ ๋ณด๋ฅผ ๋ด๊ณ ์์ด ์ฝ๋ ์คํ์ ํ์ํ ํ๊ฒฝ์ ์ ๊ณตํฉ๋๋ค.
3. ๋น๋๊ธฐ ์์ ์ฒ๋ฆฌ
๋น๋๊ธฐ ์์ ์ด ๋ฐ์ํ๋ฉด Callback Queue์ ํจ๊ป Callstack์ด ์ฌ์ฉ๋ฉ๋๋ค. Callback Queue์ ์๋ ํจ์๋ค์ Callstack์ด ๋น์ด์์ ๋ ์์ฐจ์ ์ผ๋ก ์คํ๋ฉ๋๋ค.
์ฌ์ฉ ์ํฉ
JavaScript Callstack์ ์ฃผ๋ก ๋ค์๊ณผ ๊ฐ์ ์ํฉ์์ ์ฌ์ฉ๋ฉ๋๋ค.
1. ํจ์ ํธ์ถ ๋ฐ ๋ฐํ
ํจ์๊ฐ ํธ์ถ๋๋ฉด Callstack์ ํด๋น ํจ์์ ์คํ ์ปจํ ์คํธ๊ฐ ์ถ๊ฐ๋๊ณ , ํจ์๊ฐ ๋ฐํ๋๋ฉด ํด๋น ์คํ ์ปจํ ์คํธ๊ฐ ์ ๊ฑฐ๋ฉ๋๋ค.
2. ์ฌ๊ท ํจ์
์ฌ๊ท ํจ์๊ฐ ํธ์ถ๋ ๋๋ง๋ค Callstack์ ์๋ก์ด ์คํ ์ปจํ ์คํธ๊ฐ ์ถ๊ฐ๋๋ฏ๋ก, ์ฌ๊ท ํธ์ถ์ ํตํด ๋ฐ๋ณต ์์ ์ ์ํํ ์ ์์ต๋๋ค.
3. ์ด๋ฒคํธ ๋ฃจํ
๋น๋๊ธฐ ์์ ์์ Callstack, Callback Queue, ์ด๋ฒคํธ ๋ฃจํ๊ฐ ํจ๊ป ๋์ํ์ฌ ๋น๋๊ธฐ ์ฝ๋๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค.
์ฅ๋จ์
์ฅ์
1. ์คํ ์์ ๊ด๋ฆฌ
Callstack์ ํตํด ํจ์์ ์คํ ์์๋ฅผ ํจ๊ณผ์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์์ด ์ฝ๋์ ์์ธก ๊ฐ๋ฅ์ฑ์ ๋์ ๋๋ค.
2. ์คํ ์ปจํ ์คํธ ์ ๊ณต
๊ฐ ํจ์ ์คํ์ ๋ํ ์คํ ์ปจํ ์คํธ๋ฅผ ์ ๊ณตํ์ฌ ๋ณ์, ํจ์ ๋ฑ์ ์ ์ ํ ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
๋จ์
1. ์คํ ์ค๋ฒํ๋ก์ฐ
์ผ๋ถ ์ํฉ์์ ์ฌ๊ท ํธ์ถ์ด ๋ฌดํ์ ์ผ์ด๋๊ฑฐ๋ Callstack์ด ์ ํ๋ ํฌ๊ธฐ๋ฅผ ์ด๊ณผํ๋ฉด ์คํ ์ค๋ฒํ๋ก์ฐ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
JavaScript Callstack ์์ ์ฝ๋
1. ๊ธฐ๋ณธ ํจ์ ํธ์ถ
function greet(name) {
console.log(`Hello, ${name}!`);
}
function sayHello() {
greet('John');
}
sayHello();
2. ์ฌ๊ท ํจ์
function countdown(n) {
if (n <= 0) {
return;
}
console.log(n);
countdown(n - 1);
}
countdown(5);
3. ๋น๋๊ธฐ ์์
console.log('Start');
setTimeout(() => {
console.log('Timeout callback');
}, 2000);
console.log('End');
์ฐ๊ด๋ ๊ธฐ์
JavaScript Callstack๊ณผ ๋ฐ์ ํ ๊ด๋ จ์ด ์๋ ๊ธฐ์ ๋ก๋ ๋ค์๊ณผ ๊ฐ์ ๊ฒ๋ค์ด ์์ต๋๋ค.
1. Event Loop
๋น๋๊ธฐ ์์ ์ ์ฒ๋ฆฌํ๊ณ Callstack์ ๋ฑ๋กํ๋ ์ด๋ฒคํธ ๋ฃจํ ๊ฐ๋ ์ด ์ฐ๊ด๋ฉ๋๋ค.
2. Promise
๋น๋๊ธฐ ์์ ์ ์ข ๋ ํธ๋ฆฌํ๊ฒ ๋ค๋ฃฐ ์ ์๋๋ก ๋์ ๋ Promise ๊ฐ๋ ์ด Callstack๊ณผ ํจ๊ป ์ฌ์ฉ๋ฉ๋๋ค.
3. Async/Await
Promise๋ฅผ ๋ ์ฝ๊ฒ ๋ค๋ฃฐ ์ ์๋๋ก ๋์์ฃผ๋ Async/Await ๋ฌธ๋ฒ์ด Callstack๊ณผ ์ฐ๋ํ์ฌ ์ฌ์ฉ๋ฉ๋๋ค.
๊ฒฐ๋ก
JavaScript Callstack์ JavaScript ์ฝ๋์ ์คํ ํ๋ฆ์ ์ถ์ ํ๊ณ ํจ์ ํธ์ถ์ ๊ด๋ฆฌํ๋ ํต์ฌ ๋ฉ์ปค๋์ฆ์ ๋๋ค. ์ด๋ฅผ ์ดํดํ๋ฉด ์ฝ๋์ ๋์ ๋ฐฉ์์ ๋ ๋ช ํํ ์ดํดํ ์ ์์ผ๋ฉฐ, ๋๋ฒ๊น ๋ฐ ์ฑ๋ฅ ์ต์ ํ์ ๋์์ด ๋ฉ๋๋ค.
'IT' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋๋ฒ๊น (Debugging)์ ๊ฐ๋ ๊ณผ ํ์ฉ (0) | 2024.03.06 |
---|---|
Visual Studio Code์ Run and Debug ๊ธฐ๋ฅ (0) | 2024.03.05 |
Pinpoint: ๋ถ์ฐ ์์คํ ๋ชจ๋ํฐ๋ง ๋๊ตฌ (0) | 2024.03.05 |
Redis: ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์บ์ฑ์ ํ์ (0) | 2024.03.05 |
Pub-Sub Pattern: ์ด๋ฒคํธ ๊ธฐ๋ฐ ํต์ ์ ํต์ฌ (0) | 2024.03.02 |
๋๊ธ