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은 재할당 필요한 경우에 한정해 사용
'스터디 > 모던 자바스크립트 Deep Dive(24.02-24.06)' 카테고리의 다른 글
17장. 생성자 함수에 의한 객체 생성 (0) | 2024.04.08 |
---|---|
16장. 프로퍼티 어트리뷰트 (0) | 2024.04.01 |
14장. 전역 변수의 문제점 (0) | 2024.04.01 |
13장. 스코프 (0) | 2024.04.01 |
12장. 함수 (0) | 2024.04.01 |