var 이제 그만!

JavaScript에는 현재 3가지의 변수 선언이 존재한다.

varletconst이다.

letconst는 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

constlet처럼 변수를 선언하는 변수 타입이지만 let과는 다르다.

const birth = "20010207";
console.log(birth);
birth = "19990207";
//Uncaught TypeError: Assignment to constant variable.
console.log(birth);

let은 변수를 선언 및 값을 할당하고 다시 값을 할당할 수 있지만,

const는 한 번 선언하면 값을 다시 할당할 수 없다(값을 변경할 수 없다).

즉, 재할당불가능하고 재선언불가능하다.

이것이 letconst의 차이다.

3. var

var은 이전의 변수 선언 규칙을 뒤엎어버린다.

var는 변수를 어떤 위치에 선언하든 값을 재할당할 수 있다.

또한 재선언도 가능하다.

이것이 가능한 이유는 hoisting이 발생하기 때문인데,

간단하게 hoisting은 어디에 선언하든 코드 범위의 가장 위쪽에 끌어올린다고 생각하면 된다.

fruit = "apple";
var fruit;
console.log(fruit);
// apple
console.log(fruit);
// undefined
var fruit;

이전의 let이라면 이미 오류를 발생시켰을 것이다.

변수를 선언하기도 전에 값을 할당했기 때문이다.

반면 var는 오류를 발생시키지도 않는다.

심지어 letconst에 적용되는 block scope도 무시해버린다.

이렇게 보면 굉장히 유연하게 보이지만 이는 치명적인 오류를 발생시킬 수 있다.

개발하는 어플리케이션이 무거워질수록 이런 사소한 에러를 잡기가 굉장히 힘들어진다.

그런데 이런 에러를 발생시키지도 않는 var를 사용하면 디버깅이 정말 어려워질 것이다.

4. 이전의 나는

나는 JS로 개발할 때 항상 var를 사용했다.

이제는 letconst를 사용해야겠다.

반드시!

5. 참조

  1. https://velog.io/@bathingape/JavaScript-var-let-const-%EC%B0%A8%EC%9D%B4%EC%A0%90
  2. https://www.youtube.com/watch?v=OCCpGh4ujb8&list=PLv2d7VI9OotTVOL4QmPfvJWPJvkmv6h-2&index=3

좋은 웹페이지 즐겨찾기