이 코드의 결과는 다음과 같습니다.
calculating... hello 9! = 45
먼저 calculate 함수가 호출되어 calculating...을 출력합니다. 그다음 hello 함수를 호출하고 나서 setTimeout 함수의 첫 번째 인자로 등록된 함수가 호출됩니다.
현재 calculate 함수에서 기존에 수행되던 작업이 setTimeout으로 감싸져 있습니다. setTimeout 함수는 주어진 시간 이후에 특정 함수를 실행합니다. 첫 번째 인자에는 실행하고 싶은 함수를 넣고, 두 번째 인자에는 시간을 ms(0.001초) 단위로 넣습니다.
결국 앞의 코드는 0초 후 우리가 설정한 함수를 실행한다는 의미입니다. setTimeout에서 두 번째 인자에 0을 넣으면 자바스크립트 런타임 환경에 따라 최소 4ms~10ms 이후 함수로 실행합니다(Node.js는 1ms 이후 실행됩니다). 이렇게 setTimeout을 사용했을 때 첫 번째 인자로 넣은 함수는 현재 코드가 실행 중인 실행 컨텍스트가 끝난 다음에 호출됩니다.