[JavaScript] 변수에 대해서
1. 변수란 무엇?
- 변수는 하나의 값을 저장하기 위해 확보한 메모리 공간 자체 또는 그 메모리 공간을 식별하기 위해
붙인 이름을 말함
- 변수는 프로그래밍 언어의 컴파일러 또는 인터프리터에 의해 값이 저장된 메모리공간의 주소로 치환되어
실행된다, 따라서 개발자가 직접 메모리 주소를 통해 값을 저장하고 참조할 필요없이 변수를 통해서
안전하게 값에 접근가능하다.
- 변수에 값을 저장하는것을 할당, 변수에 저장된 값을 읽어 들이는 것을 참조
- 변수 이름을 사용해 참조 요청하면 자바스크립트 엔진은 변수이름과 매핑된 메모리 주소를 통해 메모리
공간에 접근해서 저장된 값을 반환, 따라서 변수이름은 개발자의 의도를 나타낼 수 있게 명확하게 지어야한다
2. 식별자
- 변수이름을 식별자 라고도 한다, 식별자는 어떤 값을 구별해서 식별할 수 있는 고유한 이름을 말한다.식별자는
변수 이름에만 사용하는것이 아니라, 함수,클래스 등의 이름은 모두 식별자이다.
- 식별자는 값을 직접적으로 기억하는게 아닌 값이 저장되어있는 메모리의 주소를 기억한다, 즉 식별자는
메모리 주소에 붙인 이름이라고 할 수 있다.
3. 변수 선언
- 변수 선언이란 변수를 생성하는것을 말한다. 변수 선언시 값을 저장하기 위한 메모리공간이 확보되는데
값을 저장하기 전까지는 메모리 공간에는 undefined라는 값이 암묵적으로 할당되어 있다.
- 변수를 사용하려면 반드시 선언이 필요하다, 변수 선언할때는 var, let, const 키워드를 사용한다.
- ES6에서 var의 단점을 보완하기 위해서 let, const 키워드가 도입되었다.
- 자바스크립트 코드는 인터프리터에 의해서 한 줄씩 순차적으로 실행된다, 따라서 변수선언문 이전에
변수 참조 코드가 나올 경우에는 undefined가 출력되는데 그 이유는 변수 선언이 코드가 한줄씩 순차적으로
실행되는 시점(런타임)이 아니라 그 이전 단계에서 먼저 실행되기 때문이다. 이는 자바스크립트 엔진이
소스코드 실행 이전에 변수 선언을 포함한 모든 선언문을 소스코드에서 찾아내 먼저 실행하고 그뒤에 선언문
제외한 소스코드를 실행하기 때문이다, 이런 동작을 변수 호이스팅이라 하는데 이에 대해서는 다음에
기록하겠다.
4. 값의 할당
- 변수에 값을 할당 할 때는 할당 연산자 = 을 사용한다. 할당은 변수 선언과 동시에 이뤄질 수도 있다.
예시
const key = 50;
이때 주의할 점은 변수 선언과 값의 할당 실행 시점이 다르다는 것이다. 나란히 작성했다 하더라도
선언이 먼저 일어나고 그다음 값의 할당이 일어난다.
예시
console.log(key); //undefined
const key = 50;
console.log(key); // 50
참조: DeepDive 모던자바스크립트
본 포스트는 개인적인 공부를 위해 작성되었습니다.