데이터의 저장공간으로 사용자가 이름을 붙여 사용.
키워드(예약어) var, let 와 함께 작성.
Variable Hoisting 과정
선언 : 파싱 과정에서 변수 객체가 변수에 대한 식별자들을 수집
초기화 : 식별자에 메모리를 할당하고 undefined 상태를 부여
할당 : 변수 안에 직접 값을 넘김
호이스팅 hoisting 이란? Hoist(:끌어 올리다) + -ing
var 선언문이나 function 문 등 모든 선언문이 해당 영역의 앞으로 끌어 올린 것처럼 동작하는 특성.
선언된 함수는 상단에서 참조, 호출이 가능
선언된 var 는 상단에서 참조, 할당이 가능하다.
선언된 let , const 는 상단에서 참조, 할당이 불가능
var
함수 레벨 스코프 function level scope: 함수 내에서 선언된 변수는 함수 내에서만 유효. 함수 내에서 선언되면 지역변수, 함수 외부에서 선언되거나 키워드 생략시 전역변수.
var 키워드 생략 가능
변수 중복 선언 가능
변수 호이스팅(변수를 선언하기 전에 참조) 가능
let
블록 레벨 스코프 block level scope: {중괄호} 안에서 선언된 변수는 블록 내부에서만 유효. 외부에서 참조할 수 없음. 함수, if문, for문 등...
변수에 재할당 가능하나 같은 이름으로 재선언은 불가능
· 숫자 변수 초기화 let num = 0;
· 문자열 변수 초기화 let txt = "";
· 논리 변수 초기화 let boo = false;
· 객체 변수 초기화 let obj = null;