[JavaScript] Hoisting - Lexical Environment

JavaScript에는 Hoisting이라는 성질이 있다. 한 줄로 소개하자면 "변수를 제일 위에 선언하는 것"이라고 할 수 있다. 이 내용을 가장 잘 함축하고 있다고 생각되는 코드를 먼저 보자. 이 코드를 실행하면 너무 쉽게 아래처럼 결과가 나올 것으로 생각할 수 있다. 하지만 놀랍게도 틀렸다. 결과는 다음과 같다. Hoisting 때문인데 이것을 알기 전에 이해에 필요한 Lexical Environment가 뭔지부터 보자. Lexical Environment Lexical Environment란 변수나 함수가 어디 작성되어 있는지를 나타내는 것이다. 주의해야 할 부분은 코드가 어디에서 실행되었느냐가 아니다.(어디에서 실행되었는지를 나타내는 단어는 Dynamic Scope라고 부름) 자세한 설명을 위해 앞 글인 Runtime의 Call Stack 예제를 다시 가져왔다.

2021년 1월 9일
·
0개의 댓글
·