var => 과거의 영광이여..!
지금은 쓰이고 있지 않은 과거의 영광을 가진 var
var로 선언된 변수의 범위는 현재 실행 문맥이다. 그 문맥을 둘러싼 함수, 혹은 함수의 외부에 전역으로 선언된 변수도 될 수 있다.
var의 특징
1. 변수를 한 번 더 선언했음에도 불구하고, 에러가 나오지 않고 각기 다른 값이 출력되는 것을 볼 수 있다.
유연한 변수 선언으로 간단한 테스트에는 편리 할 수 있겠으나, 코드량이 많아 진다면 어디에서 어떻게 사용 될지도 파악하기 힘들뿐더러 값이 바뀔 우려가 있다.(어디가 잘못된건지 못찾는건 덤..)
이러한 특징 때문에 var 변수 선언 오류는 예기치않은 결과로 이어질 가능성이 높다.
이를 보완하기 위해 ES6 이후 let과 const가 나타났다.
let => var보단 내가 낫다!!
let을 이용하여 같은 변수를 선언하면 'Identifier '변수' has already been declared'라는 오류를 볼 수 있다. 이미 선언되어서 메모리(?)에 할당되었기 때문에 같은 변수는 사용할 수 없는 것이다.
그렇다면 const와 let은 무슨 차이일까?
const => 뚝심있는 선언
말 그대로 뚝심이 철철 넘처흐른다.
블록 범위의 상수를 선언하며,
한번 선언하면 재할당, 재선언이 불가능한 불변성을 가지고 있다.