프로그래밍 언어/JavaScript

JavaScript) 변수 선언 var, let, const 차이점

luana_eun 2022. 1. 3. 14:51
728x90

자바스크립트 변수 선언에는 3가지가 있다. var, let, const

처음에는 var만 있었는데 ES6(2015)부터 let, const가 새로 생겼다. 

3가지로 나눈데에는 이유가 있고, 각각 알맞는 쓰임새가 있기 때문에 이 세 개의 차이를 확실히 정리해보려한다. 

 

 

* 자바스크립트 변수 선언의 특징.

자료형에 상관없이 선언한다: 정수, 실수, 문자열 상관없이 그냥 선언할 수 있다. (=파이썬 처럼)

 

 

0. 지역변수와 전역변수

지역변수: 함수 내에서 선언된 변수.

             블럭{ }안에서 선언된 것은 함수 내에서만 사용가능하고

             함수 시작시 생성되고 함수 종료시 삭제된다.  -> 필요할때 쓰고 버리는 느낌..?

전역변수: 해당 코드의 모든 부분에서 사용가능한 변수

var a = 10;

function fun() {
	var a = 20;
    return "지역변수 : " + a;
}
document.write(fun());		// 20

document.write("전역변수 : " + a);		//10

 

 

1. const

: 재할당 불가능. 한번 값을 넣으면 값을 변경할 수 없다.

 기존의 변수들은 한번 선언하고 초기화를 한 후 값을 변경할 수 있었다. ex) var a = 10; a = 5;

 하지만 const로 선언할 경우, 값을 바꿀 수 없다.   

 => 값이 변경되면 안되는 중요한 값의 경우 const로 선언하면 실수로 바뀔 일이 없음. 

 

 

 

2. var

: 재할당, 재선언 가능. 3가지 중 가장 자유로운 편이다. 

함수 내에서 선언되면 -> 지역변수

함수 외에 선언되면 -> 전역변수

함수(function)안에서 선언된거는 함수 밖에서 사용할 수 없지만

그 외(if, try 등)에서 선언된거는 블럭{ }안에서 된거라도 전체적으로 사용할 수 있다. (<- 제일 자유롭다고 한게 이거!)

                                                                         (↖ java에서는 상상도 할 수 없는 일..)

 

 

3. let

: 재할당 가능

블럭{ } 안에서 할당된거는 모두 지역변수. 외부에서 참조가 불가능하다. 

 

 

 

4. 표로 한번에 보기

  var let const
재선언 O X X
재할당 O O X
함수 외부참조 X X X
블럭 외부참조 O X X

 

 

5. 사용 비율

let과 const 등장 이후 var는 거의 사용하지 않고있다.

재선언, 함수 외에 외부참조가되다보니 코드 중복이 많아질 수 있고, 실수 확률도 높아지기 때문이다. 

 

그래서 안전성을 위해 값을 바꿔야 하는 경우가 아니면 const를 우선적으로 사용하고

값이 중간에 바뀌면 let를 권장하고 있다. 

728x90