- ๋ง ๊ทธ๋๋ก
๋์์ ์ผ์ด๋๋ค
๋ ์๋ฏธ์ด๋ค. - ์์ฒญ์ ๋ณด๋ธ ํ ํด๋น ์์ฒญ์ ์๋ต(=๊ฒฐ๊ณผ)์ ๋ฐ์์ผ ๋ค์ ๋์์ ์คํํ๋ ๋ฐฉ์์ด๋ค.
- ์ค๊ณ๊ฐ ๊ฐ๋จํ๊ณ ์ง๊ด์ ์ด์ง๋ง ๊ฒฐ๊ณผ๋ฅผ ๋ณผ๋๊น์ง ์๋ฌด๊ฒ๋ ๋ชปํ๊ณ ๋๊ธฐํด์ผ ๋๋ค.
- ์ฆ, ์์ฒญ์ด ๋ค์ด์จ ์์์ ๋ง๊ฒ ํ๋์ฉ ์ฒ๋ฆฌํ๋ ๋ฐฉ์์ด๋ค. ์์์ ๋ง์ถฐ ์งํ๋๋ค๋ ์ฅ์ ์ ์์ง๋ง, ์ฌ๋ฌ๊ฐ์ง ์์ฒญ์ ๋์์ ์ฒ๋ฆฌํ ์ ์๋ค.
- ์ค์ cpu๊ฐ ๋๋ ค์ง๋ ๊ฒ์ ์๋์ง๋ง, ์์คํ
์ ์ ์ฒด์ ์ธ
ํจ์จ์ด ์ ํ
๋๋ค๊ณ ํ ์ ์๋ค.
function func1() {
console.log('func1');
func2();
}
function func2() {
console.log('func2');
func3();
}
function func3() {
console.log('func3');
}
func1(); //์ถ๋ ฅ: func1 func2 func3
- ์์ ์์๋ ๋๊ธฐ์์ผ๋ก ๋์ํ๋ ์ฝ๋๋ก, ์์ฐจ์ ์ผ๋ก ์คํ๋๋ค.
- ๋ง๊ทธ๋๋ก
๋์์ ์ผ์ด๋์ง ์๋๋ค
๋ ์๋ฏธ์ด๋ค. - ์์ฒญ์ ๋ณด๋ธ ํ ์๋ต๊ณผ ๊ด๊ณ์์ด ๋ค์ ๋์์ ์คํํ๋ ๋ฐฉ์์ด๋ค.
- ๊ฒฐ๊ณผ๊ฐ ์ฃผ์ด์ง๋๋ฐ ์๊ฐ์ด ๊ฑธ๋ฆฌ๋๋ผ๋ ๊ทธ ์๊ฐ๋์ ๋ค๋ฅธ ์์
์ด ๊ฐ๋ฅํด
์์์ ํจ์จ์ ์ธ ์ฌ์ฉ์ด ๊ฐ๋ฅ
ํ์ง๋ง, ์ค๊ณ๊ฐ ๋๊ธฐ์ ๋ฐฉ์๋ณด๋ค ๋ณต์กํ๋ค.
function func1() {
console.log('func1');
func2();
}
function func2() {
setTimeout(function () {
console.log('func2');
}, 0);
func3();
}
function func3() {
console.log('func3');
}
func1(); //์ถ๋ ฅ: func1 func3 func2
- ์์ ์์ ๋ ๋น๋๊ธฐ์์ผ๋ก ์ฒ๋ฆฌํ๋ ์ฝ๋์ด๋ค.
setTimeout ๋ฉ์๋
๊ฐ ๋ํ์ ์ธ๋น๋๊ธฐ ํจ์
์ด๋ค.
1. ํจ์ func1 ํธ์ถ๋๋ฉด ํจ์ func1์ Call Stack์ ์์ธ๋ค.
2. ํจ์ func1์ ํจ์ func2์ ํธ์ถํ๋ฏ๋ก ํจ์ func2๊ฐ Call Stack์ ์์ด๊ณ setTimeout๋ฉ์๋๊ฐ ํธ์ถ๋๋ค.
3. setTimeout์ ์ฝ๋ฐฑ ํจ์๋ ์ฆ์ ์คํ๋์ง ์๊ณ , ์ง์ ๋๊ธฐ ์๊ฐ๋งํผ ๊ธฐ๋ค๋ฆฌ๋ค๊ฐ 'tick' ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ฉด ์ด๋ฒคํธ ํ๋ก ์ด๋ํ๋ค.
4. Call Stack์ด ๋น์ด์ก์ ๋ Call Stack์ผ๋ก ์ด๋๋์ด ์คํ๋๋ค.
https://sinsomi.tistory.com/entry/%EC%8B%A0%EC%9E%85-%EA%B0%9C%EB%B0%9C%EC%9E%90-%EB%A9%B4%EC%A0%91-%EB%8F%99%EA%B8%B0%EC%99%80-%EB%B9%84%EB%8F%99%EA%B8%B0-%EA%B0%9C%EB%85%90-%EC%B4%88%EC%BD%94%EB%8D%94
https://velog.io/@dolarge/cs-%EB%8F%99%EA%B8%B0%EC%99%80-%EB%B9%84%EB%8F%99%EA%B8%B0
https://seunghyun90.tistory.com/51
https://webclub.tistory.com/605
https://private.tistory.com/24