: 하나의 값을 저장하기 위해 확보한 메모리 공간 자체, 또는 그 메모리 공간을 식별하기 위해 붙인 이름
: 어떤 값을 구별해서 식별할 수 있는 고유한 이름 (ex. 변수명, 함수명 ...)
: 값의 저장을 위한 메모리 공간 확보 + 변수 이름과 확보된 메모리 공간의 주소 연결
= 함수 레벨 스코프 지원 → 의도치 않은 전역 변수 선언
var score; // 변수 선언
변수 선언 단계
- 선언 단계 = 변수의 이름을 등록하여 변수의 존재를 알림
- 초기화 단계 = 값의 저장을 위해 메모리 공간을 확보하고 암묵적으로 undefined를 할당해 초기화
undefined라는 값이 암묵적으로 할당되어 초기화: 변수 선언문이 코드의 선두로 끌어 올려진 것처럼 동작하는 자바스크립트 고유의 특징
console.log(score); // undefined
var score;
var score; // 변수 선언
score = 80; // 값의 할당
var score = 80; // 변수 선언과 값의 할당
변수 선언 = 소스코드가 순차적으로 실행되는 시점인 런타임 이전에 먼저 실행
값의 할당 = 소스코드가 순차적으로 실행되는 시점인 런타임에 실행
console.log(score); // undefined
var score; // 변수 선언
score = 80; // 값의 할당
console.log(score); // 80
console.log(score); // undefined
score = 80; // 값의 할당
var score; // 변수 선언
console.log(score); // 80
var score = 80; // 변수 선언과 값의 할당
score = 90; // 값의 재할당
const 키워드