var, let, const의 차이점 복습하기
변수 중복 선언 허용
같은 이름의 변수가 선언되어있는지 모르고 중복 선언하게 된다면 의도치 않게 값이 바뀌는 부작용이 발생할 수 있다.
함수 레벨 스코프
var 키워드로 선언한 변수는 오로지 함수의 코드 블록만을 지역 스코프로 인정
함수 외부에서 var 키워드로 선언한 변수는 코드 블록 내에서 선언해도 모두 전역 변수가 된다.
함수 레벨 스코프는 전역 변수를 남발할 가능성을 높인다. 따라서 전역 변수가 중복 선언되는 경우가 발생한다.
변수 호이스팅
변수 호이스팅에 의해 var 키워드로 선언한 변수는 변수 선언문 이전에 참조할 수 있다.
변수 선언문 이전에 변수를 참조하면 에러는 나지 않지만 가독성을 떨어뜨리고 오류가 발생할 여지를 남긴다.
변수 중복 선언 금지
이름이 같은 변수를 중복 선언하면 문법 에러가 발생한다.
블록레벨 스코프
let 키워드로 선언한 변수는 모든 코드 블록을 지역 스코프로 인정하는 블록 레벨 스코프를 따른다.
const 키워드는 상수를 선언할 때 사용한다. 하지만 상수만을 위해 사용하지는 않는다.
선언과 초기화
const키워드는 반드시 선언과 동시에 초기화한다.
//그렇지 않으면 에러발생
const 키워드로 선언한 변수는 블록레벨 스코프를 가지며 변수 호이스팅이 발생하지 않는 것처럼 동작한다.
재할당 금지
const키워드로 선언한 변수는 재할당이 금지된다.
const foo = 1;
foo = 2; //type error
상수는 재할당이 금지된다.
상수는 상태유지와 가독성, 유지보수의 편의를 위해 적극 사용 권장
기본적으로 const를 사용, let은 재할당이 필요한 경우에 한정해 사용한다.