변수 (Varidable)
변수는 하나의 값을 저장하기 위해 확보한 메모리 공간 자체 또는
그 메모리 공간을 식별하기 위해 붙인 이름을 뜻한다.
변수는 메모리에 저장된 값을 읽어 들여 재사용하기 위해 사용되는 메커니즘이다.
메모리 주소에 직접적 접근은 오류를 발생시킬 가능성이 높기에 우리는 변수에 값이 담긴 메모리 주소를 담아 사용한다.
변수에 값을 저장하는 건 할당(assignment) 라고 하며, 값을 읽어 들이는건 참조(reference) 라고 한다.
변수 선언
변수를 사용하려면 반드시 선언이 필요하다.
변수는 선언을 통해 값을 저장하기 위한 메모리 공간을 확보하고 변수 이름과 주소를 연결해 값을 저장할 수 있게 된다.
변수는 var(현재는 사장됨), let, const 총 3가지 키워드로 선언할 수 있고, 선언된 변수는 2 단계를 거치게 된다.
- 선언 단계: 변수 이름을 등록해 엔진에 변수의 존재를 알린다.
- 초기화 단계: 값을 저장하기 위한 메모리 공간을 확보하고 암묵적으로 undefined 를 할당해 초기화 한다.
자바스크립트에서의 변수는 선언 시 소스코드가 실행되는 시점 (런타임)이 아니라 그 이전 단계에서 먼저 실행되는데, 이 특징을 호이스팅(hoisting) 이라고 한다.
* function, class 또한 호이스팅된다.
이 챕터의 설명과 예제들은 var 키워드로 이루어져 있으니 참고해야 할 점들만 간단히 짚고 넘어가자.
var 키워드를 사용한 변수 선언은 선언 단계 - 초기화 단계가 동시에 진행되며
let, const 와 달리 TDZ가 없기 때문에 선언 전에 호출해도 에러가 발생하지 않는다.
console.log(result);
var result = 80
// Expected output: undefined
또한 var 선언한 변수는 재할당이 가능한데
재할당시에는 원래의 메모리공간에 재할당된 값을 덮어씌우는게 아니라
새로운 메모리 공간을 확보하고 그 공간에 재할당된 값을 저장한다.
* 재할당 등으로 인해 더 이상 사용되지 않는 가비지 콜렉터에 의해 메모리에서 자동 해제된다.
+ 자바스크립트는 가비지 콜렉터가 내장되어 있어 메모리 누수를 방지한다.
변수 네이밍
- 예약어(function, class, break 등)은 사용 불가능하다.
- 특수문자를 제외한 문자, 숫자, 언더스코어(_), 달러 기호($)를 포함할 수 있으나, 숫자로 시작하는 것은 허용되지 않는다.
좋은 변수 이름은 코드의 가독성을 높이기에 변수 존재 목적을 쉽게 이해할 수 있도록 의미를 명확히 표현해주어야 한다. 이를 위해 네이밍 컨벤션이 존재하고, 자바스크립트는 변수,함수에는 카멜 케이스 / 생성자 함수, 클래스에는 파스칼 케이스를 사용한다.
// 카멜 케이스 (camelCase)
let firstName;
// 파스칼 케이스 (PascalCase)
let FisrtName;
'JavaScript' 카테고리의 다른 글
모던 자바스크립트 Deep Dive / 6장 데이터 타입 (2) | 2024.08.30 |
---|---|
모던 자바스크립트 Deep Dive / 5장 표현식과 문 (0) | 2024.08.28 |
[JavaScript] 자료구조 : 해시 테이블 (0) | 2024.05.27 |
[JavaScript] 자료구조 : 배열(Array) (0) | 2024.05.27 |
[JavaScript] 자료 구조 (1) | 2024.05.27 |