1. 중복선언 허용 관점
- var는 중복 선언이 가능해서 많은 코드들을 var로 사용하면 위에서 사용하던 변수들은 사라진다.
- let 과 const는 중복선언이 불가 / (SyntaxError 발생)
2. 스코프 관점
-스코프는 참조 대상 식별자(변수, 함수의 이름과 같이 어떤 대상을 다른 대상과 구분하여 식별할 수 있는 유일한 이름)을 찾아내기 위한 규칙이다.
- var키워드는 변수의 스코프가 함수단위로 구분 (함수 스코프)
- 함수를 기준으로 스코프를 구분하기 때문에 함수 안에서 선언한변수는 함수 안에서만 유효하다
- 함수를 제외한 조건문이나 반복문에서 새로운 변수를 만들어도 모두 전역변수로 평가된다 (전역 스코프)
-> 고유하게 사용할 수 있는 지역변수가 없다는 단점이 있다.
- let 과 const 는 중괄호가 사용된 부분을 기준으로 변수의 유효범위를 구분
- 블록수준의 스코프를 사용, 블록 내부에서 선언한 변수는 모두 지역 변수로 취급되며 블록 내부에서 선언한 변수들을 외부에서 참고할 수가 없다.
호이스팅 관점
-인터프리터가 코드를 실행하기 전에 함수, 변수, 클래스 또는 임포트의 선언문을 해당 범위의 맨 위로 이동시키는 과정
- var는 함수 스코프를 기준으로 선언되기 이전에도 변수에 접근이 가능하다.
- 변수를 만들기도 전에 출력하면 에러 발생이 아니라 underfined가 출력
- let 과 const는 변수 선언 전에 사용 불가 (ReferenceError 발생)
-> 객체는 현재 범위에서 존재하지 않거나 초기화되지 않은 변수를 참조했을 때 발생하는 에러
'weeklypaper' 카테고리의 다른 글
브라우저의 동작 원리 (0) | 2023.12.16 |
---|---|
얕은 복사(Shallow Copy)와 깊은 복사(Deep Copy) (0) | 2023.12.12 |
js 비교연산자 '==' 와 '===' 차이점은? (0) | 2023.12.12 |
git flow에 대해서 (0) | 2023.12.12 |
git에서 branch merge 3가지 방법 (0) | 2023.12.12 |