1. var 변수 문제점
1) 변수 중복 선언 허용
2) 함수 레벨 스코프
: var 키워드로 선언한 변수는 오로지 함수의 코드 블록만을 지역 스코프로 인정함.
: 따라서 함수 외부에서 var로 선언한 변수는 코드 블록 내 선언해도 모두 전역 변수가 됨.
3) 변수 호이스팅
: 변수 선언문이 스코프의 선두로 끌어 올려진 것처럼 동작함
2. let 키워드
: 변수 중복 선언 금지
: 블록 레벨 스코프 - 모든 코드 블록을 지역 스코프로 인정하는 블록 레벨 스코프를 따름
: 변수 호이스팅 발생 X
: var 키워드와 달리 "선언 단계" 와 "초기화 단계"가 분리되어 진행 된다.
: 따라서 초기화 단계 실행되기 이전에 변수에 접근하려고 하면 참조 에러가 발생함
: 스코프의 시작 지점부터 초기화 시작 지점까지 변수를 참조할 수 없는 구간을 일시적 사각지대라고 함(TDZ)
: let 키워드로 선언한 전역 변수는 전역 객체의 프로퍼티가 아니기 때문에 window.foo 등으로 접그 ㄴ불가.
: 보이지 않는 개념적인 블록인 "실행 컨텍스트" 내에 존재하게 된다.
3. const 키워드
: const 키워드로 선언한 변수는 반드시 선언과 동시에 초기화 해야함.
: 재할당이 금지된다.
: 재할당이 금지된 변수인 상수를 표현하는데 사용하기도 함.
: const 키워드로 선언된 변수에 객체를 할당한 경우 값을 변경할 수 있다.
const person = {
name = "Lee",
};
// 객체는 변경 가능한 값이므로 재할당없이 값 변경 가능
person.name = "Kim";
console.log(person); // { name : "Kim" }
: 재할당을 금지하는 것이지 불변을 의미하진 않음
: 프로퍼티 동적 생성, 삭제, 프로퍼티 값의 변경을 통해 객체를 변경하는 것은 가능함.
4. 결론
: 되도록 const 키워드로 변수 선언하는 습관을 기르자!
'프로그래밍 > JavaScript' 카테고리의 다른 글
[모딥다] JS (7) - 생성자 함수에 의한 객체 생성 (0) | 2024.12.20 |
---|---|
[모딥다] JS (6) - 프로퍼티 어트리뷰트 (0) | 2024.12.19 |
[모딥다] JS (4) - 전역 변수의 문제점 (0) | 2024.12.18 |
[모딥다] JS (3) - 스코프 (1) | 2024.12.17 |
[모딥다] JS (2) - 함수 (0) | 2024.12.11 |