โ
Call Stack์ด๋?
- ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ด ํจ์๋ฅผ ์คํํ ๋ ์ฌ์ฉํ๋ ์๋ฃ๊ตฌ์กฐ
- ํ์
์ ์ถ (LIFO: Last In, First Out) ๋ฐฉ์
- ํจ์๊ฐ ํธ์ถ๋๋ฉด Stack์ ์์ด๊ณ , ์คํ์ด ๋๋๋ฉด ๋น ์ง๋ค
โ
์ปดํฌ๋ํธ์์์ ๊ธฐ๋ณธ ์คํ ํ๋ฆ
jsx
๋ณต์ฌํธ์ง
function MyComponent() {
console.log("1: ์์");
function task1() {
console.log("2: task1 ์คํ");
}
function task2() {
console.log("3: task2 ์คํ");
}
task1(); // โ
ํธ์ถ๋จ โ Stack์ ์ฌ๋ผ๊ฐ
task2(); // โ
ํธ์ถ๋จ โ Stack์ ์ฌ๋ผ๊ฐ
console.log("4: ๋");
return <div>Done</div>;
}
โ
์คํ ์์
MyComponent()
ํจ์๊ฐ Stack์ ์ฌ๋ผ๊ฐ
task1()
์ด ํธ์ถ๋จ โ Stack์ ์ฌ๋ผ๊ฐ์ ์คํ
task1()
์คํ ์ข
๋ฃ โ Stack์์ ๋น ์ง
task2()
ํธ์ถ โ Stack์ ์ฌ๋ผ๊ฐ์ ์คํ
task2()
์คํ ์ข
๋ฃ โ Stack์์ ๋น ์ง
return
๋ฌธ ์คํ โ JSX ๋ฐํ
MyComponent()
์ข
๋ฃ โ Stack์์ ๋น ์ง
โ
ํต์ฌ ์์
- ํธ์ถ๋ ํจ์๋ง Stack์ ์ฌ๋ผ๊ฐ๋ค
- ์์๋๋ก ํธ์ถ๋๋๋ผ๋, ๋ด๋ถ์ ์ผ๋ก๋ ํ์
์ ์ถ ๋ฐฉ์์ผ๋ก ์ฒ๋ฆฌ๋๋ค