hoisting1 You don't know JS : 타입과 문법, 스코프와 클로저 - 9. 호이스팅 호이스팅 닭이 먼저냐, 달걀이 먼저냐 코드가 한 주 한 줄 위에서부터 차례대로 해석될 것이라고 생각하기 쉽다. 대체로 옳은 생각이지만, 바로 이런 추정 때문에 프로그램을 잘못 이해 할 수 있다. a = 2; var a; console.log(a); ??? 답은 2가 나온다 왜?? 위에서 아래로 처리되는 방식이 아니었으니 이번 코드에서도 그런 식으로 처리되어 똑같이 2가 출력되리라 생각할지도 모른다. 또는 a가 선언되기 전에 사용되었으니 ReferenceError가 발생한다고 생각할 수도 있다. 불행히도 둘 다 틀렸다. 출력 결과는 undefined이다. 무엇이 먼저일까. 선언문(달걀)일까? 아니면 대입문(닭)일까? 컴파일러는 두 번 공격한다. 자바스크립트 엔진이 코드를 인터프리팅하기 전에 컴파일한다는 사.. 2019. 7. 27. 이전 1 다음