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

이거의 호출스택이

이렇게 되고 위에부터 실행돼서
task end
task start
next task
이렇게 되는게 아닌가요?
55글자 더 채워주세요.
2개의 답변이 있어요!
안녕하세요.
자바스크립트 호출 스택에 대해서 질문해주셨네요.
console.log('task start'); task(); console.log('next task');이 순서로 동작하는 것이 맞습니다.
아래 링크의 내용을 읽어보시면 자바스크립트의 호출 스택과
이벤트 루프에 대한 내용이 잘 이해되실 것입니다.
아닙니다
현재 사용하신 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');
함수의 "정의" 와 "호출" 에 대하여 살펴보시면 많은 도움이 될것같습니다.