1.2呼び出しスタック

1569 ワード

スタック

function c() {
	console.log('c');
}

function a() {
	console.log('a');
    function b() {
    	console.log('b');
        c();
    }
    b();
}

a();

어떤 순서로 돌아가는지 알아야되!
결과: a, b, c
コードは上から下まで通常実行されます.
JavaScriptはこのような形でスタックとして実行されます.スタックは基本的にLIFOの性質を持つ.

クリーンアップ用語


LIFO:Last Info First Outは、最後に入って最初に出て、最初に入って最後に出て行くという意味です.名刺だと思ってください.名刺は下から上へ積み重ねて、上から上へ掛けます.
逆の概念Queuもあります.キューはFIFO形式です

詳しく調べてみましょう


function c() {
	console.log('c');
}

function a() {
	console.log('a');
    function b() {
    	console.log('b');
        c();
    }
    b();
}

a();

1. 호출 할때만 호출스택에 쌓이는 것이다.
2. a가 먼저 호출이되서 a호출 스택이 쌓인다 => console.log('a')가 호출되어 log 호출이 쌓이고, 해당 함수로 가서 함수를
실행한다. 실행이 끝나면 log함수는 사라진다 => b호출 스택이 쌓인다. => console.log('b')가 호출되고 호출이 쌓인뒤 실행후
지워지다. => c호출이 쌓이고 console.log('c')가 호출되고 쌓인후, 실행후 사라진다 => c의 함수가 '}'를 만나면 함수가 끝
난 것이므로 c가 사라진다 => b도 '}'후 사라진다 => a도 코드 실행후 사라진다.
スタック呼び出しを確認するにはdebuggerを使用します.
デバッガに遭遇した場合は、開発者ツールからソースウィンドウに移動してスタックを表示できます.

整理する

  • 呼び出しスタックは、関数が呼び出されたときにのみスタック形式でスタックされます.
  • スタックはLIFO特性を有する.
  • 関数が呼び出されると、その関数に移動し、その関数で"}"に遭遇するとスタックから削除されます.
  • 「debugger」を関数に書き込むと、開発者ツールで呼び出しスタックを表示できます.