업데이트:

Javascript에서 변수를 선언할 때는 주로 let이나 const를 사용한다. 하지만 보통 우리가 처음 Javascript를 배울 때, 예제들을 보면 대부분 var {변수명}을 사용한다.

var jang = new CheckWeight("장보리", 190, 89);
var park = new CheckWeight("박새론",160,49);
console.log(jang);
console.log(park);

Javascript 입문서를 통해 만든 예제 중 하나다. 이 코드에서도 jang과 park은 var을 통해 선언되어있다. 이런 단순한 코드를 사용할 떄는 var을 쓰든 let을 쓰든 딱히 별 차이가 없다. 그러면 왜 var을 되도록이면 쓰지 말라는 것일까?

let, var의 유효 범위 규칙

let은 var처럼 블록 범위를 무시한 채 전역 변수나 지역 변수로 선언되는 것과 달리, 철저히 해당 변수가 선언된 블록이나 표현식 내에서만 유효한 변수를 선언한다.

let let_Print = 'Hello World.';
var var_Print = 'Hello World.';
{
    let let_Print = "Bye World.";
    var var_Print = "Bye World.";
}
console.log(let_Print); //prints 'Hello world.'
console.log(var_Print); //prints 'Bye World.'

블록안에서 선언된 let_print는 블록 범위 안에서만 유효할 뿐, 블록 밖에서까지 유효하지 않다. 하지만 var_print는 let_print와 달리 블록 범위를 무시한 채 변수를 선언하기 때문에 변수가 재선언된다. 쉽게 말하면 let과 달리 var은 블록으로 유효 범위를 지정할 수 없다. 이런 특징 때문에 let으로 변수를 선언하면 유효 범위를 지정할 수 있으므로 더 깨끗한 코드를 작성할 수 있다.

변수 재선언 불가

var은 변수를 재선언하면 가장 마지막으로 선언했던 변수로 선언되지만, let은 재선언 자체가 불가능하다. 재선언을 할 경우 SyntaxError이 발생한다.

function anyFunction(){
    var camel = 1;
    var camel = 2; 
    console.log(camel); //camel = 2

    let donkey = 1;
    let donkey = 2; 
    console.log(donkey); //SyntaxError
}

그렇기 때문에 1000줄이 넘는 코딩을 하다가 실수로 같은 명칭의 변수를 재선언한 우를 범했다면, var로 변수를 선언을 했을 경우 프로그램이 정상적으로 실행되기 때문에 대체 어디서부터 잘못되었는지 모른채 시간을 낭비할 것이다. 하지만 let으로 변수를 선언헀을 경우, 최소한 당신은 어디서부터 잘못되었는지 알게 될 것이다. “SyntaxError : 여기서 변수를 재선언했네. 다시 고쳐”라며 다시 바로잡을 기회를 줄 것이기 때문이다.

카테고리:

업데이트:

댓글남기기