티스토리 뷰

JavaScript

콜 스택(call stack)

ljy98 2022. 1. 8. 23:15

1. 콜 스택 (call stack)

2. 콜 스택 예제


1. 콜 스택 (call stack)

[그림 1] 스택 프레임 구조

스택 프레임 (stack frame)

 

메모리의 스택(stack) 영역은 함수의 호출과 관계되는 지역 변수와 매개변수가 저장되는 영역이다. 스택 영역은 함수의 호출과 함께 할당되며, 함수의 호출이 완료되면 소멸한다. 

 

함수가 호출되면 스택에는 함수의 매개변수, 호출이 끝난 뒤 돌아갈 반환 주소값, 함수에서 선언된 지역 변수 등이 저장된다. 이렇게 스택 영역에 차례대로 저장되는 함수의 호출 정보를 스택 프레임(stack frame)이라고 한다.

 

 

콜 스택 (call stack)

 

콜 스택이란 컴퓨터 프로그램에서 현재 실행 중인 서브루틴에 관한 정보를 저장하는 스택 자료구조이다. 

 

콜 스택을 사용하는 주된 이유는 현재 실행 중인 서브루틴의 실행이 끝났을 때, 제어를 반환할 지점을 보관하기 위해서이다. 실행 중인 서브루틴은 호출되어서 그 실행이 아직 완료되지는 않았지만, 완료 후에는 호출된 지점으로 제어를 넘겨야 한다.

 

 

2. 콜 스택 예제

function main() {

    fn2();
    
    console.log("main");
    
}

function fn2() {

    console.log("fn2");
    
    fn3();
    
}

function fn3() {

    console.log("fn3");
    
    fn4();
    
}

function fn4() {

    fn5();
    
    console.log("fn4");
    
}

function fn5() {

    console.log("hello");
    
    fn6
    
}

function fn6() {

    console.log('hello world!');
    
}

main();

콜 스택과 관련된 간단한 예제로, console.log(); 의 순서를 구하는 문제이다. 

 

[그림 2] 예제 정답

function main()에 fn2();가 console.log("main"); 보다 윗 줄에 있으므로 "main"을 출력하기 전에 function fn2()로 이동한다. 여기서 "fn2"를 출력하고, function fn3()으로 이동한다.

 

이런 방식으로 계속 이어가다 보면 [그림 2]와 같은 결과를 얻을 수 있다.

'JavaScript' 카테고리의 다른 글

DOM과 BOM  (0) 2022.01.10
addEventListener 사용법  (0) 2022.01.10
문제풀이 (String 메소드, Array 메소드 이용)  (0) 2022.01.07
spread operator와 rest parameter  (0) 2022.01.07
객체 복사 방법 - 얕은 복사 vs. 깊은 복사  (0) 2022.01.07
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/11   »
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
글 보관함