var는 한 번 선언된 변수를 다시 선언할 수 있다. (let은 불가)
var name = 'jjw';
console.log(name); //jjw
var name = 'jungjaewoong';
console.log(name); //jungjaewoong
JavaScript
복사
var는 선언하기 전에 사용할 수 있다.
console.log(name); //undefined
var name = 'jjw';
JavaScript
복사
•
var로 선언한 변수는 코드가 실제로 이동하진 않지만 최상위로 끌어올려진것처럼 동작한다.
var name;
console.log(name); //undefined
name = 'jjw';
JavaScript
복사
호이스팅
•
스코프 내부 어디서든 변수 선언은 최상위에 선언된것처럼 행동
•
선언은 호이스팅 되지만 할당은 호이스팅되지 않는다.
변수의 선언 과정
var
1.
선언 및 초기화 단계
2.
할당 단계
let
1.
선언 단계
2.
초기화 단계
3.
할당 단계
const
1.
선언 + 초기화 + 할당
스코프
var : 함수 스코프 (function-scopred)
let, const : 블록 스코프 (block-scoped)
•
모든 코드 블럭 내에서 선언된 변수는 코드 블럭 내에서만 유효하며, 외부에서는 접근할 수 없다.
var는 이제 사용하지 않고, let과 const를 권장한다.
예측 가능한 결과를 내고, 버그를 줄일 수 있다.