let과 var의 차이

조성철 (JoSworkS)·2020년 3월 6일
0

TIL(Today I Learned)

목록 보기
30/73
post-thumbnail

var와 let의 차이점

1. 변수의 재할당 허용

var는 변수의 재할당을 허용하지만, let은 허용하지 않는다.
아래의 예제 코드를 통해 조금 더 자세히 확인해 보면...

var a = '1';
var a = '2';

console.log(a); // 2

let b = '1';
let b = '2'; // Uncaught SyntaxError: Identifier 'b' has already been declared

'b'가 이미 선언되어 있다고 문법에러를 보여준다. 🙀 따라서 let을 사용하는 편이 같은 이름의 변수를 무심코 사용해 버린다던가, 변수가 예상 외의 값이 할당되는 등의 버그가 발생하기 쉬운 가능성을 줄여준다.

2. 블록 스코프의 인식

let이 var보다 세세하게 변수의 유효범위를 관리할 수 있다.
아래 예제 코드를 보면...

// var 사용
if (true) {
  var i = 1;
}

console.log(i) // 1

// let 사용
if (true) {
  let i = 1;
}

console.log(i); // Uncaught ReferenceError: i is not defined at <anonymous>:5:13

var 키워드를 사용한 if문의 변수 i는 블록 스코프 '{}' 의 밖에서도 참조 가능하다!
반면, let 키워드를 사용한 if문의 변수 i는 블록 스코프 밖에서 참조하려고 하면 레퍼런스 에러를 보여준다! ☺️

결론

  • var는 function-scoped이고 let는 block-scoped이다. var는 변수 재선언이 가능한데 let은 변수에 재선언은 못하고 재할당만 가능하다.
  • var는 function 단위로 호이스팅 되기에 선언 단계와 초기화 단계가 한번에 이루어져 선언문 이전에도 참조가 가능한데 let은 block 단위로 호이스팅 되기에 선언 단계와 초기화 단계가 분리되어 선언문 이전에 참조하면 참조에러가 발생한다.
  • var는 확실하게 처음부터 끝까지 사용할 변수에 적용할 때 활용하는 편이 좋고, 블럭마다 확실하게 스코프에 맞추어 사용하려면 재할당이 가능한 let을 활용하는게 좋다.

0개의 댓글