본문 바로가기

Programing/Javascript

[JavaScript] var 를 사용하지 않는 이유

var

var는 ES6 등장 이전에 변수를 선언할 때 사용되던 키워드다.

하지만 ES6 등장 이후 letconst를 사용하고, var는 큰 단점이 있어 현재 잘 사용하지 않는다.

그래서 오래된 소스들을 보면 대부분 var로 선언되어 있는 모습을 볼 수 있다....

 


그럼 어떤 단점이 있는지 알아볼까?

먼저 아래 코드를 보면 변수 num중복으로 선언되어 있다. 그러나 이를 오류로 판단하지 않고 정상 동작한다.

var num = 123;
var num = 456;

console.log(num);

실행결과 : 456

 

만약 소스코드가 길어지고 큰 프로젝트를 진행하게 될 경우, 해당 문제로 인한 오류를 찾기가 매우 힘들어진다.

 

그런데, 왜 이런 현상이 나타날까?

그 이유는 바로 Hoisting(호이스팅) 때문이다.

JavaScript에서 호이스팅(hoisting)이란,

인터프리터가 변수와 함수의 메모리 공간을 선언 전에 미리 할당하는 것 을 의미한다.

var로 선언한 변수의 경우 호이스팅 시 undefined로 변수를 초기화하며, 변수의 선언과 초기화를 분리한 후, 해당 변수의 선언부를 최상단으로 옮기기 때문에 이런 일이 발생하게 된다.

 

그래서, 뭘 쓰는게 좋을까?

재할당이 필요없는 상수과 객체에는 기본적으로 const를 사용하는 것이 좋다. 의도치 않은 재할당을 방지해주기 때문에 안전하다.

재할당이 필요한 경우 let 사용하는 것이 좋다. ,   변수의 스코프는 최대한 좁게 만드는 것이 좋다

 

반응형