250x250
Notice
Recent Posts
Recent Comments
- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- mongodb
- MYSQL
- TypeScript
- double quote
- jsonwebtoken
- RDS
- Nodejs
- single quote
- Express
- nginx
- certbot
- mongoose
- flutter
- wil
- async
- Find
- findByIdAndDelete
- await
- til
- TailwindCSS
- JavaScript
- css
- Node.js
- AWS
- clipBehavior
- atlas
- sequelize
- moment
- EC2
- https
Link
Archives
기억 휘발 방지소
[JavaScript] 호출스택 본문
728x90
반응형
호출스택이란?
호출 스택은 현재 어떤 함수가 동작하고 있는지, 그 함수 내에서 어떤 함수가 동작하는지, 다음에 어떤 함수가 호출되어야하는지 등을 제어한다.
MDN
호출 스택은 스택이라는 단어에서 알 수 있듯이 LIFO(Last In First Out) 구조이다.
호출되는 모든 함수는 호출 스택에 추가되고 추가되는 역순으로 실행되는 구조이다.
예제
function a() {
b();
console.log("aaa");
}
function b() {
c();
console.log("bbb");
}
function c() {
console.log("ccc");
}
a();
위의 코드를 실행했을 때 결과는 어떻게 나올까?
정답은 아래와 같다.
ccc
bbb
aaa
위 코드는 다음과 같이 실행된다. 호출스택은 아래에서 위로 쌓이는 구조로 그렸다.
1. a() 함수를 호출
2. 호출 스택에 a() 함수를 추가
호출스택
a()
콘솔창
3. a() 함수를 실행
4. a() 함수 안에 있는 b() 함수를 호출 스택에 추가
호출스택
b()
a()
콘솔창
5. b() 함수 실행
6. b() 함수 안에 있는 c() 함수를 호출 스택에 추가
호출스택
c()
b()
a()
콘솔창
7. c() 함수 안에 있는 console.log("ccc") 실행하고 c() 함수를 호출 스택에서 제거
호출스택
b()
a()
콘솔창
ccc
8. b() 함수 안에 있는 console.log("bbb")를 실행하고 b() 함수를 호출 스택에서 제거
호출스택
a()
콘솔창
ccc
bbb
9. a() 함수에 있는 console.log("aaa")를 실행하고 a() 함수를 호출 스택에서 제거
호출스택
콘솔창
ccc
bbb
aaa
10. 끝
728x90
반응형
'Web > JavaScript' 카테고리의 다른 글
[JavaScript] parseInt() vs Number() (0) | 2021.09.03 |
---|---|
[JavaScript] 이벤트 루프 (0) | 2021.09.02 |
[JavaScript] Set을 Array로 바꾸는 방법 (0) | 2021.08.30 |
[JavaScript] 함수 선언식과 함수 표현식 (0) | 2021.08.28 |
[JavaScript] 배열 복사하기 (0) | 2021.08.27 |