이 시리즈는 You Don't Know JS Yet (1판인 You Don't Know JS의 개정판) 을 가지고 스터디를 진행하면서 요약 정리한 글입니다. 내용에 대한 퀴즈도 깃헙 리포지토리에 올리고 있으니 참고하시면 더 도움이 되실 것 같습니다. 내용에 대해 오류가 있거나 궁금하신 점이 있다면 댓글 달아주세요!
JS의 스코프를 이해하기 전에는 JS의 작동 원리를 간략하게 이해해야 합니다. 이에 대해서는 이전 글에서 정리를 했지만, 간단하게 한번 더 정리해볼까 합니다. (자세한 설명을 보고 싶으시다면 윗 링크를 확인해주시길 바랍니다.)
세상에 있는 프로그래밍 언어들을 작동하는 방식중 컴파일 언어와 인터프리팅 언어가 있는데, 이 둘간의 차이점은 코드를 처리하는 과정에 있습니다. 인터프리팅 언어는 코드를 한줄한줄씩 해석하고 실행하는데, 컴파일 언어는 코드를 전체적으로 해석 이후 실행합니다. 이 책은 지난번에도 언급했듯, JS는 컴파일 언어로 생각하고 서술을 진행합니다.
그럼 JS는 세부적으로 어떻게 코드를 파악하고 실행할까요? 다음과 같은 3단계를 통해 실행하게 됩니다.
더 간단하게 요약하자면, JS는 파싱 후 실행하는 과정을 따라갑니다. 이렇게 때문에 실행 전에도 당연히 오류가 발생할 수 있기에 Syntax error, Early eror, Hoisting과 같은 에러가 나올 수 있는 것입니다. 예시로 든 에러들은 앞줄에 이상이 없더라도 앞줄도 실행이 안되는 상태가 됩니다.
JS에서 변수를 어떻게 관리하는지 알아보기 전에, 변수를 사용법에 따라 두가지 역활로 나누어 보겠습니다.
이때, 객채나 클래스의 요소는 Target과 Source로 나누어질수 없습니다. 요소는 변수가 아니고, 이에 대해서는 추후 객체를 다룰 때 언급할 예정입니다.