JavaScript 변수 선언하기

허정원·2021년 1월 23일
0

TIL

목록 보기
5/15
post-thumbnail

JS에서 변수를 선언하는 방법은 var let const 세 가지가 있는데 이들의 차이점을 알아보자.

차이점을 알기 전에 scope의 개념을 알고 가자.

Scope

scope는 범위라는 뜻을 가지고 있다. 한정된 범위 내에서 실행하는 block scope 와 파일 전체에 실행하는 grobal scope으로 나뉜다.


  • Block scope

{
  let name = 'Oni';
}
console.log(name);

name이란 변수를 { } 중괄호 안에 선언하고 { } 범위 밖에서 name이란 변수에 접근하게 되면 아무 값도 출력되지 않는다.

  • Global scope

let name = 'Oni';
{
  console.log(name);
}
console.log(name);

반대로 name 변수를 { } 중괄호 밖에서 선언하면 범위 안, 밖 모두 접근할 수 있게 된다.

var


ES6 (javascript의 버전) 이후 let, const의 등장으로 아무도 쓰지 않는 변수 선언 방법이다.

이유는 hoisting 때문이다. hoisting은 '끌어올린다' 라는 단어로

변수를 어디서 선언했던, 파일 맨위로 끌어 올리기는 것이다. 이 var hoisting 때문에 자동으로 선언된 변수는 grobal scope 로 변해서 사용자는 원하지 않는 결과를 얻는 위험부담을 가지게 된다.

사람들이 쓰지 말라는데는 이유가 있다. 절대 쓰지 말자 !

let


ES6 이후 var로 인한 사용자들의 불편함 속에서 출시했다.

당연히 var의 단점이 없어진 선언 방법이다.

let name = 'Oni';
name = 'Onion';
console.log(name);

예시 처럼 변수의 값을 변경할 수 있는 mutable data type 이다. 즉 read/write가 가능하다.

const


let 과 다른 점은 변수를 선언함과 동시에 값을 고정되어 변경할 수 없는 immutable data type 이다.

const name = 'Oni';
name = 'Onion';
console.log(name);

위 처럼 출력하면 const 로 선언된 변수의 값을 바꿀 수 없다며 console 에서 error를 출력 한다.

나처럼 입문자는 코딩의 양이 많아 질 수록 변수의 이름이 겹치는 경우가 발생하는데 이 같은 사용자의 실수를 줄여주고, 외부에서 데이터의 값을 변경하지 못하게 함으로써 안전하다는 장점이 있다.

꼭 변경해야할 데이터가 아니라면 let 보단 const 를 사용하도록 하자.

0개의 댓글