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.)