JS에서 변수를 선언하는 방법은 var
let
const
세 가지가 있는데 이들의 차이점을 알아보자.
차이점을 알기 전에 scope의 개념을 알고 가자.
scope는 범위라는 뜻을 가지고 있다. 한정된 범위 내에서 실행하는 block scope
와 파일 전체에 실행하는 grobal scope
으로 나뉜다.
{
let name = 'Oni';
}
console.log(name);
name
이란 변수를 { } 중괄호 안에 선언하고 { } 범위 밖에서 name
이란 변수에 접근하게 되면 아무 값도 출력되지 않는다.
let name = 'Oni';
{
console.log(name);
}
console.log(name);
반대로 name
변수를 { } 중괄호 밖에서 선언하면 범위 안, 밖 모두 접근할 수 있게 된다.
ES6 (javascript의 버전) 이후 let
, const
의 등장으로 아무도 쓰지 않는 변수 선언 방법이다.
이유는 hoisting 때문이다. hoisting은 '끌어올린다' 라는 단어로
변수를 어디서 선언했던, 파일 맨위로 끌어 올리기는 것이다. 이 var hoisting 때문에 자동으로 선언된 변수는 grobal scope
로 변해서 사용자는 원하지 않는 결과를 얻는 위험부담을 가지게 된다.
❌사람들이 쓰지 말라는데는 이유가 있다. 절대 쓰지 말자 !❌
ES6 이후 var
로 인한 사용자들의 불편함 속에서 출시했다.
당연히 var
의 단점이 없어진 선언 방법이다.
let name = 'Oni';
name = 'Onion';
console.log(name);
예시 처럼 변수의 값을 변경할 수 있는 mutable data type
이다. 즉 read/write
가 가능하다.
let
과 다른 점은 변수를 선언함과 동시에 값을 고정되어 변경할 수 없는 immutable data type
이다.
const name = 'Oni';
name = 'Onion';
console.log(name);
위 처럼 출력하면 const
로 선언된 변수의 값을 바꿀 수 없다며 console 에서 error를 출력 한다.
나처럼 입문자는 코딩의 양이 많아 질 수록 변수의 이름이 겹치는 경우가 발생하는데 이 같은 사용자의 실수를 줄여주고, 외부에서 데이터의 값을 변경하지 못하게 함으로써 안전하다는 장점이 있다.
꼭 변경해야할 데이터가 아니라면 let
보단 const
를 사용하도록 하자.