참고: 이웅모 《모던 자바스크립트 Deep Dive》 04장 · MDN Grammar and types — Variables

계산 결과를 다시 쓰려면 이름이 필요하다. 그게 변수다. 이 장은 “왜 변수인가”부터 선언·호이스팅·재할당·네이밍까지, 이후 let/const(15)의 바닥이다.

flowchart LR
  DECL[선언] --> BIND[이름 바인딩]
  BIND --> ASSIGN[할당]
  ASSIGN --> READ[참조]
  ASSIGN --> RE[재할당]

4.1 변수란? 왜 필요한가?

값을 재사용·추적·의도 표현. 매직 넘버를 이름 있는 상태로 바꾼다.

const taxRate = 0.1;
const price = 1000;
const tax = price * taxRate;

4.2 식별자

변수·함수·클래스 이름. 유니코드 허용 범위, 예약어 금지, 대소문자 구분.

4.3 변수 선언

var / let / const. 이 장 초점은 var 시대 감각 + 선언의 의미. 실무 기본은 const/let(15).

var x;
let y = 1;
const z = 2;

4.4 실행 시점과 호이스팅

선언이 스코프 평가 단계에서 먼저 처리되는 것처럼 보인다. var는 undefined로 초기화, let/const는 TDZ(15).

console.log(a); // undefined with var
var a = 1;

4.5 값의 할당

선언과 할당은 다를 수 있다. =는 할당 연산(표현식).

4.6 재할당

같은 이름에 다른 값. const는 바인딩 재할당 불가(15).

let count = 0;
count = count + 1;

4.7 네이밍 규칙