아하
생활

생활꿀팁

조그만코뿔소159
조그만코뿔소159

js 호출스택에 대해 궁금한게 생겼어요

이거의 호출스택이

이렇게 되고 위에부터 실행돼서

task end

task start

next task

이렇게 되는게 아닌가요?

55글자 더 채워주세요.
2개의 답변이 있어요!
  • 차분한기러기89
    차분한기러기89

    안녕하세요.

    자바스크립트 호출 스택에 대해서 질문해주셨네요.

    console.log('task start'); task(); console.log('next task');

    이 순서로 동작하는 것이 맞습니다.

    아래 링크의 내용을 읽어보시면 자바스크립트의 호출 스택과

    이벤트 루프에 대한 내용이 잘 이해되실 것입니다.

    https://jongbeom-dev.tistory.com/m/119

  • 아닙니다

    현재 사용하신 JS를 보시면 아래와 같습니다.

    function task(){ console.log('task end'); } console.log('task start'); task(); console.log('next task');

    출력은 당연히

    task start

    task end
    next task

    로 출력됩니다.

    왜냐면 처음에 지정하신

    function task(){

    console.log('task end');

    }

    이부분은 말그대로 task 라는 함수를 정의하신것입니다.

    함수를 정의만하시고 실행은 하지 않으셨죠.

    이 경우 task 는 task 를 실행시 어떤 행동을 할지 미리 지정한것뿐이지 task를 실행 콜스택에 넣지 않습니다.

    그 밑에 실제로 console에 찍는 순서를 보시면

    start > task 실행 ( end 출력) > next task 를 실행하고있으시죠??

    그럼 순서상 start > end > next 가 출력되는것이 맞습니다.

    이게 헷갈리시면 위 코드에서

    console.log('task start');

    task(); << 이 부분의 순서를 바꿔보시거나 주석처리하시면 가장 간단하게 볼수있습니다.

    console.log('next task');

    함수의 "정의" 와 "호출" 에 대하여 살펴보시면 많은 도움이 될것같습니다.