본문 바로가기
weeklypaper

var, let, const 를 중복 선언 허용, 스코프, 호이스팅 관점에서 서로 비교

by 띠리에이터 2023. 12. 16.
1. 중복선언 허용 관점
  • var는 중복 선언이 가능해서 많은 코드들을 var로 사용하면 위에서 사용하던 변수들은 사라진다. 

  • let 과 const는 중복선언이 불가 / (SyntaxError 발생)

 

 

2. 스코프 관점

 

-스코프는 참조 대상 식별자(변수, 함수의 이름과 같이 어떤 대상을 다른 대상과 구분하여 식별할 수 있는 유일한 이름)을 찾아내기 위한 규칙이다.

  • var키워드는 변수의 스코프가 함수단위로 구분 (함수 스코프)
  • 함수를 기준으로 스코프를 구분하기 때문에 함수 안에서 선언한변수는 함수 안에서만 유효하다 

  • 함수를 제외한 조건문이나 반복문에서 새로운 변수를 만들어도 모두 전역변수로 평가된다 (전역 스코프)
    -> 고유하게 사용할 수 있는 지역변수가 없다는 단점이 있다.

  • let 과 const 는 중괄호가 사용된 부분을 기준으로 변수의 유효범위를 구분
  • 블록수준의 스코프를 사용, 블록 내부에서 선언한 변수는 모두 지역 변수로 취급되며 블록 내부에서 선언한 변수들을 외부에서 참고할 수가 없다. 
호이스팅 관점

 

-인터프리터가 코드를 실행하기 전에 함수, 변수, 클래스 또는 임포트의 선언문을 해당 범위의 맨 위로 이동시키는 과정

  • var는 함수 스코프를 기준으로 선언되기 이전에도 변수에 접근이 가능하다. 
  • 변수를 만들기도 전에 출력하면 에러 발생이 아니라 underfined가 출력

 

  • let 과 const는 변수 선언 전에 사용 불가 (ReferenceError 발생)
    ->  객체는 현재 범위에서 존재하지 않거나 초기화되지 않은 변수를 참조했을 때 발생하는 에러