변수

이경택·2022년 3월 17일
0

변수

변수란 무엇인가?

변수란 값을 저장하기 위해 확보한 메모리 공간 주소, 혹은 그 메모리 공간 주소를 식별하기 위해 붙인 이름이다.


값을 저장하고 저장된 값을 읽어들여 재사용 하기 위해 변수를 사용

식별자

저장된 값의 메모리 주소를 구별할 수 있게 붙인 고유한 이름이다.
저장 된 값을 기억하는것이 아닌 메모리 주소를 기억하고 있다.

변수 선언

메모리 공간을 확보하고 메모리 주소와 변수를 연결하는 단계이다.
변수 선언은 2단계로 이루어진다.
1. 선언 단계 = 변수 이름을 등록 해서 자바스크립트 엔진에 변수의 존재를 알린다.
2. 초기화 단계 = 값을 저장하기 위한 메모리 공간을 확보하고 undefined로 초기화 시킨다.
*초기화 하는 이유는 이전에 썼던 다른 값이 남아있을 수 있기 때문이다.

변수 호이스팅

변수 선언이 런타임이 실행되기 전에 코드의 맨 위로 끌어올려진것 처럼 작동하는 것
모든 식별자는 호이스팅된다.

호이스팅이 발생하는 이유?

자바스크립트는 소스코드를 평가하고 실행하는 2단계로 나누어져 실행되는데
소스코드를 평가하는 과정에서 변수 선언이 실행 컨텍스트가 관리하는 환경에 등록되고
평가하는 단계가 끝나면 소스코드가 순차적으로 실행된다. 즉 런타임이 시작된다는 의미이다.
실행되는 단계에서 어떤 변수를 만나면 실행 컨텍스트 환경에서 검색하고 참조한다.


자바스크립트는 소스코드를 평가하고 실행하기 때문에 런타임 이전에 선언한 변수와 함수를 실행 컨텍스트가 관리하는 환경에 등록하게 된다. 이에 따라 호이스팅이 발생하게 되는 것이다. 평가 과정에서 key-value 쌍으로 변수와 함수를 등록할 때 해당 변수와 함수 식별자를 key로 하고 value는 undefined를 등록하게 된다. 그렇기 때문에 위에서 변수 x를 출력할 때 "undefined"가 출력되는 것이다.

profile
한 줄로 소개 할 수 없는 개발자

0개의 댓글