스터디/모던 자바스크립트 Deep Dive(24.02-24.06)

15장. let, const 키워드와 블록 레벨 스코프

minseokiim 2024. 4. 1. 16:56

1. var 키워드로 선언한 변수의 문제점

1) 변수 중복 선언 허용 : 중복 선언하면서 값까지 할당하면 재할당 부작용 발생

2) 함수 레벨 스코프 : var 키워드로 선언한 변수는 오직 함수의 코드블록만 지역 스코프로 인정 -> 전역변수 남발

3) 변수 호이스팅 : var 키워드로 선언한 변수는 선언문 이전에 참조 가능, 하지만 할당문 이전에 참조하면 undefined 반환

+ 특징 : var 키워드로 선언한 전역 변수, 전역 함수, 선언하지 않은 변수에 값을 할당한 암묵적 전역은 객체 window의 프로퍼티가 됨

 

 

2. let 특징

1) 변수 중복 선언 금지 : 문법 에러 발생

2) 블록 레벨 스코프 : 모든 코드 블록을 지역 스코프로 인정

3) 변수 호이스팅 : 변수 호이스팅이 발생하지만, 발생하지 않는 것 처럼 동작

선언문 이전에 참조하면 참조에러 발생, 선언과 초기화 단계 분리

초기화 단계 전에 접근하려고 하면 참조에러 발생

 

* 일시적 사각지대?

스코프의 시작 지점부터 초기화 시작 지점까지 변수를 참조 할 수 없는 구간

 

 

 

3. const 특징

1) const 키워드로 선언한 변수는 선언과 동시에 초기화

2) 재할당 금지

3) 상수(재할당이 금지된 변수)

const 키워드로 선언된 변수에 원시값을 할당한 경우 원시값은 변결할 수 없는 값이고,

const 키워드에 의해 재할당이 금지되므로 할당된 값을 변경 할 수 없음

 

 

 

4. const 키워드와 객체

const 키워드로 선언된 변수에 객체를 할당한 경우 값을 변경 할 수 있음

const 키워드는 재할당을 금지할 뿐, 불변을 의미하는 것은 x

-> 새로운 값 재 할당은 불가능하지만, 프로퍼티 동적 생성, 삭제, 값의 변경을 통해 객체 변경하는 것은 가능(참조 값은 변경x)

 

 

5. let과 const

let은 재할당 필요한 경우에 한정해 사용