var
를 써왔다. var
는 function scope
를 가진다. function
안에서 정의하면 외부의 접근을 막아주지만, if
안이나 try-catch
문 등등 에서 선언하면 외부에서도 접근이 가능하다. 따라서 프로그램의 덩치가 커지거나, 다른 개발자와 협업시 var는 오염될 수 있다. 이러한 단점을 막기위해 let
과 const
가 생겼다.var
와는 달리, const
와 let
은 block scope
를 가진다. 그 말인 즉슨, {}
안에서 선언한다면 외부에서 접근이 불가능하다는 뜻이다. let
은 재할당이 가능하고, const
는 재할당이 불가능하다. const lastName = 'hong';
//lastName = 'kim' //<-- 불가능하다.
let firstName = 'eunmo';
firstName = 'chulsoo'; //<-- 가능하다.
그렇다고 const
가 불변인 것은 아니다. 다음의 예제를 보자.
const Person = {
name : 'eunmo hong',
gender : 'male',
age : 29;
};
Person.age = 19; // <-- 가능하다.
//Person = "123456" // <-- 불가능하다.
결론. 기본적으로 const
를 쓰되, 필요할 때만 let
을 쓰자. var
는 쓰지말자.