첫번째로는 synchronous와 aysynchronous에 대해서 알아보면 JS는 synchronous 즉 동기적인 프로그램이다. 바로 hoisting이 된 이후부터 코드가 작성한 순서에 맞쳐서 하나하나씩 동기적으로 실행된다는 것이다. hoisting이란 var변수와 function declaration 함수선언들이 자동적으로 제일위로 올라가는 것이 hoisting이다. hoisting된 이후부터 코드가 나타나는 순서대로 자동적으로 실행이 된다. 아래와 같이 정해진 순서에 맞게 나타난다. aysynchronous는 비동기적으로 언제 코드가 실행될 지 예측할 수 없는 것을 말한다. 아래 예제를 보자 setTimeout이라는 web API가 있는데 브라우저에서 제공되어지는 API로 지정한 시간이 지나면 전..