아핫뉴스실시간 인기검색어
아핫뉴스 화산 이미지
아하

생활

생활꿀팁

조그만코뿔소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');

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