[JS] Const, Let, Var의 차이점




목록

  1. Javascript의 변수
  2. Const에 대해서
  3. Let에 대해서
  4. Var에 대해서
  5. 정리



1. Javascript의 변수

Javascript에는 변수를 선언하는 키워드 const, let, var가 있습니다.
이 키워드들은 아래에 대해 차이가 있습니다.

  • 초기값
  • 중복 된 값 할당
  • 호출 범위

우선 constletvar 모든 변수들은 아래와 같이 
,(쉼표)로 구분하여 동시에 여러 변수를 정의 할 수 있습니다.

const category= "header",
      key= "content-Type",
      value= "application/json";



2. Const에 대해서

const는 값이 변하지 않는 변수를 선언하는 키워드입니다. 
const는 반드시 초기 값을 설정을 해주어야 하며,
선언 한 변수에 대해 나중에 값을 다시 할당 할 수 없습니다.

const에서 선언한 변수에 값을 다시 할당하는 경우에는
다음과 같은 오류 ( TypeError)가 발생합니다. 

const key = "content-Type";
key = "appId"; 
// Result => TypeError: invalid assignment to const 'key'

 따라서 변수에 값을 다시 할당 할 필요가 없는 경우에는, 
const 키워드로 변수 선언 할 것을 권장합니다.

루프 등의 반복 도중에 특정 변수가 참조하는 값을 바꿔야 할 때가 있습니다. 
그런 경우에는 변수에 다시 할당 할 수 있는 let키워드로 선언 합니다.



3. Let에 대해서

let는 초기 값을 지정하지 않아도 됩니다. 
초기 값을 지정하지 않는 경우, undefined 값으로 초기화됩니다.

let key;
// `key` is initialized `undefined`


let이 선언 된 key라는 변수에  "content-Type"이라는 문자열을 대입하고 있습니다.

let key;
key = "content-type";



4. Var에 대해서

var 키워드는 초기 값을 선언하지 않아도 되며,
값을 재할당을 해도 된다는 점에서 let과 유사합니다.
그러나, var키워드는 같은 이름의 변수를 다시 정의 할 수 있습니다.

let과 const는 같은 이름의 변수를 정의할 수 없으며,
다음과 같은 구문 오류 ( SyntaxError)가 발생합니다. 
따라서 실수로 변수를 이중으로 정의하는 실수를 방지 할 수 있습니다.

let key;
let key; // => SyntaxError: redeclaration of let key


한편,  var의 경우에는 같은 이름의 변수를 다시 정의 할 수 있습니다. 
이것은 실수로 같은 변수 이름으로 정의해도 오류가 나지 않으며,
이전에 선언했던 값을 덮어 버립니다.

var x = 1;
var x = 2;
// x is 2


let은 변수를 선언하기 전에 그 변수를 참조하면 ReferenceError가 발생합니다. 

console.log(x); 
//ReferenceError: can't access lexical declaration `x' before initialization
let x = 1;


한편 var는 변수를 선언하기 전에 그 변수를 참조해도 undefined값이 할당 됩니다. 

console.log(x); // => undefined
var x = 1;



5. 정리

JavaScript의 변수를 선언하는 키워드로 constletvar에 대해 정리하였습니다.

  1. const는 값을 재할당 할 수 없는 변수를 선언 할 때 쓰입니다.
  2. let, var은 재할당 할 수 있는 변수를 선언 할 수 있으며,
    초기값을 선언하지 않아도 됩니다.
  3. var의 경우만 같은 값을 중복 선언 할 수 있습니다.

const는 재할당이 불가능한 변수를 정의하는 키워드입니다. 
재할당을 금지함으로써 실수로 다른 값을 할당하여 발생하는 버그를 줄일 수 있습니다. 

따라서, 변수를 선언하는 경우에는 먼저 const로 정의 할 수 없는지를 검토 후,
불가능한 경우 let를 사용할 것을 권장합니다.





답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Google photo

Google의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

%s에 연결하는 중