var 이제 그만!
JavaScript에는 현재 3가지의 변수 선언이 존재한다.
var과 let과 const이다.
let과 const는 ES6에서 추가되었다.
1. let
let은 변수를 선언하고 값을 할당할 수 있지만 같은 변수명으로 다시 선언할 수는 없다.
즉, 재할당은 가능하지만 재선언은 불가능하다.
let name = "jaewoo";
console.log(name);
let name = "eunseok"
//Uncaught SyntaxError: Identifier 'name' has already been declared
name = "hello";
console.log(name);
2. const
const는 let처럼 변수를 선언하는 변수 타입이지만 let과는 다르다.
const birth = "20010207";
console.log(birth);
birth = "19990207";
//Uncaught TypeError: Assignment to constant variable.
console.log(birth);
let은 변수를 선언 및 값을 할당하고 다시 값을 할당할 수 있지만,
const는 한 번 선언하면 값을 다시 할당할 수 없다(값을 변경할 수 없다).
즉, 재할당도 불가능하고 재선언도 불가능하다.
이것이 let과 const의 차이다.
3. var
var은 이전의 변수 선언 규칙을 뒤엎어버린다.
var는 변수를 어떤 위치에 선언하든 값을 재할당할 수 있다.
또한 재선언도 가능하다.
이것이 가능한 이유는 hoisting이 발생하기 때문인데,
간단하게 hoisting은 어디에 선언하든 코드 범위의 가장 위쪽에 끌어올린다고 생각하면 된다.
fruit = "apple";
var fruit;
console.log(fruit);
// apple
console.log(fruit);
// undefined
var fruit;
이전의 let이라면 이미 오류를 발생시켰을 것이다.
변수를 선언하기도 전에 값을 할당했기 때문이다.
반면 var는 오류를 발생시키지도 않는다.
심지어 let과 const에 적용되는 block scope도 무시해버린다.
이렇게 보면 굉장히 유연하게 보이지만 이는 치명적인 오류를 발생시킬 수 있다.
개발하는 어플리케이션이 무거워질수록 이런 사소한 에러를 잡기가 굉장히 힘들어진다.
그런데 이런 에러를 발생시키지도 않는 var를 사용하면 디버깅이 정말 어려워질 것이다.
4. 이전의 나는

나는 JS로 개발할 때 항상 var를 사용했다.
이제는 let과 const를 사용해야겠다.
반드시!
5. 참조
- https://velog.io/@bathingape/JavaScript-var-let-const-%EC%B0%A8%EC%9D%B4%EC%A0%90
- https://www.youtube.com/watch?v=OCCpGh4ujb8&list=PLv2d7VI9OotTVOL4QmPfvJWPJvkmv6h-2&index=3
Author And Source
이 문제에 관하여(var 이제 그만!), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jaewoogwak/var-이제-그만저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)