개발기록장

[Javascript] 변수를 선언하는 키워드 var, let, const 차이점 정리 본문

TIL/JavaScript

[Javascript] 변수를 선언하는 키워드 var, let, const 차이점 정리

yangahh 2020. 12. 18. 05:48

 

자바스크립트에서 변수를 선언할 때 쓰는 키워드에는 var, let, const 이렇게 3가지가 있는데 각각의 특징과 차이점을 알아보자.

 

 


 

1. var

 

초기 자바스크립트에서 사용하던 방식으로 이제는 쓰지 않는 것이 좋다.

var 사용을 지양하는 이유는 몇가지 단점이 있기 때문이다.

 

// age라는 변수를 선언하지 않았는데도 에러가 나지 않음 (undefined로 정의됨)
console.log(age);  


// 변수를 선언하기도 전에 값을 할당하는 것이 가능함
age = 20;  


// 같은 변수명으로 중복된 변수 선언이 가능함
var age = 10;
var age = 30;  

이러한 문제 뿐만아니라, var로 변수를 선언하면 block scope도 무시된다.

 

 ** hoisting : 변수를 어디에 선언했는지에 상관없이 항상 제일 위로 선언을 끌어 올려주는 것을 말함.

 

코드양이 많아지면 위의 문제로 위험부담이 굉장히 많아지므로 사용하지 않는 것을 권장한다.

 

 

 

 

2. let

 

var의 문제점을 보완하기 위해 ECMAScript 6에서 추가된 방법이다. 

let test = 'hi hi';
console.log(test);


let test = 'hello';
console.log(test);
// Uncaught SyntaxError: Identifier 'test' has already been declared

위 예시처럼 동일한 변수 명으로 변수를 중복 선언할 시 에러가 발생한다.

 

모던 자바스크립트를 지향한다면 var대신 let을 쓰도록 하자.

 

 

 

3. const

 

var와 let이 mutable (= 변수 선언 이후로 값을 바꿀 수 있는) 타입의 변수를 선언할 때 사용했다면,

 

const는 immutable (= 변수 선언 이후로 값을 바꿀 수 없는) 타입의 변수를 선언할 때 사용한다.

 

** const로 변수를 선언할 시 장점

  • 보안에 좋음 (해커들이 변수에 다른 코드를 삽입할 수 없기 때문)
  • 여러 thread가 동시에 접근 시 값이 변경되지 않음
  • 개발자의 실수를 방지

따라서 가능하면 값이 변하지 않는 것들에는 const로 변수를 선언하는 것이 좋다.

 

 

 


 

결론

 

자바스크립트에서 변수를 선언할 땐

 

- mutable type 변수  ->  let 으로 선언

- immutable type 변수  ->  const 으로 선언